いつもお世話になります
今、400行のデータをExcelからScriptファイルを使ってAutoCadに出力しています
その際、ファイルは保存形式UTF-8で
Set stm = New ADODB.Stream
stm.Charset = "UTF-8"
stm.LineSeparator = adLF
としています
データ列は13列、一行づつScriptファイルを作りAtuoCadに送ります
For Row = 1 To GridRows '...行のループ
stm.Open '...ファイルオープン
For Col = 1 To GridCols '...列のループ
With CellInfo(Row, Col) '...セル情報
If .Text <> "" Then
moji1 = CStr(.TextX) & "," & CStr(.TextY) '出力座標値
moji2 = CStr(TextHeight) '文字サイズ
moji3 ="0.0" '文字出力角度
strRec = "-Text" & vbCrLf & opt & vbCrLf & moji1 & vbCrLf & _
moji2 & vbCrLf & moji3 & vbCrLf & .Text
stm.WriteText strRec, 1 '...ファイル書き出し
End If
End With
Next Col
Application.Wait [Now() + "00:00:00.2"] '...0.2秒待つ
stm.SaveToFile PLTFname, 2 '...ファイル保存
stm.Close '...ファイルを閉じる
Application.Wait [Now() + "00:00:00.1"] '...0.1秒待つ
SendKeys "script" & Chr(13) & PLTFname & Chr(13) '...Scriptファイルの実行
Application.Wait [Now() + "00:00:00.1"] '...0.1秒待つ
Next Row
'(原点は選択セルの左上としています)
AutocadにScriptコマンドを送るときには前後に0.1秒
stmファイル書き出しには、「出力エラーが」が出るため0.1秒から0.2秒待たせます
この小さな時間が積み重なって、結構な時間になります
0.2秒待ちで、3分12秒
0.1秒待ちで、2分27秒
目標はあと1分短縮させたいのですが、stmの出力先にメモリを使えないかと相談しました
以上、良いご回答を期待しています
よろしくお願い申し上げます
No.7ベストアンサー
- 回答日時:
> 一度に書いている時間は動き感がなく作業者が不安になります
そこは「作業中」とか画面に出してけばよいでしょう。
https://learn.microsoft.com/ja-jp/previous-versi …
をはじめ「Excel プログレスバー」で検索すればいくつも例が見つかります
いつもお世話になります
それも必要と思いますが、
適度に動いていること、スムーズに動いていること等
自分自信の満足度にとらわれず
使う人の心にストレスが掛からないように工夫し、作業効率アップには
使う人の心に向き合うということが必要と思っています
(勝手ながら、私のプログラムはそういう気持ちで作っています)
ご意見、ありがとうございます
これからもよろしくお願い申しあげます
No.6
- 回答日時:
AutoCADは持ってないので詳細はわかりませんが。
メモリに出力できたとしても、それほど効果は無いと思います。
Windowsでは、あるアプリが使用中のファイルを別のアプリが使おうとするとエラーになります(なることがあります)。
srmで出力エラーになるのは、AuctoCADがscript命令で読み込んでいる最中に同じファイルを上書きしようとするためだと予想できます。
ファイルへの書き込みがちょっと速くなったところで、AutoCADが速くならないと待ち時間は同じになります。
出力ファイル名を全て別のものにすれば、wait無しでも「出力エラー」は無くなるはずです。
それよりも「Excelの1行毎にscriptを実行する」という方法を変える方が効果的だと思われます。
「全データをファイルに書き出す」
「AutoCADにscriptを実行するようにsendkeyを送る」
というフローにしたらどうですか?
ご回答、ありがとうございます
出力名を変える、思いつかなかったですね
やってみる価値がありそうです
休み明け、すぐに試してみます
一度に書く件、他にも頂きましたが
一度に書いている時間は動き感がなく作業者が不安になります
ものの何秒か動かないと首をかしげる人をたくさん見てきましたので
今回も動き感のあるものを作っていきたいと思います
本当に貴重な意見ありがとうございました
投稿した甲斐がありました
今後ともよろしくお願い申しあげます
No.5
- 回答日時:
スクリプトファイルを作成する処理と、スクリプトファイルを実行する処理を分けるのではダメなんですか?
スクリプトファイルの実行時はどのようなコマンドを使用しても0.1~0.2秒程の待機を行わないとエラーになるのでしょうか?
ご回答ありがとうございます
Scriptファイルの処理を分けるということは
作成中、何も動き感が無いので使う人は不安を感じます
使用者の不安をなくすためにも動き感が大切です
また、外のソフトを使う時は処理速度の関係で時間の調整が
必要になります
内部で計算する速度、コマンド受け付けて実行までの時間は
脳の速度と指令を受けて手が動く速度の違いみたいなものだと思います
これからもよろしくお願い申し上げます
No.4
- 回答日時:
stmの出力を短縮して1分短縮を期待したい、なんですね。
処理を大別すると
(1) For ループ
(2) SaveToFile, Close
(3) SendKeys
ですね。
VBAもAutocadも詳しくないのですが、
SendKeysによる Autocad の処理が十分に早いならば、(2)を止めて (1)の中で1行ずつ(3)を含める案も思い浮かびます。
(処理順が問題になる気はしますが…)
※ Autocad がファイル入力しか受け付けないならば、ファイルに書き出すしかないですね…
ご回答ありがとうございます
ちょっとした仕事はSendKeysを使っていますが
こちらも時間の調整が難しくて、使い続けたくないところですが
休み明けに(3)をテストしてみますね
貴重なご意見、ありがとうございました
これからもよろしくお願いいたします
No.2
- 回答日時:
forループ内のstrRecを追記するような処理に変更し
ループ内ではファイル書き出ししないようにする
ループを抜けてからファイル書き出しする
ループが0回の場合は書き出ししない
とするといいかもしれませんね
巨大なデータでないことが前提
早速のご回答ありがとうございます
ご指摘の件、Forを抜けてからは
何も出ない画面の待ち時間が問題になります
他人に使わせるソフトゆえに、ストレスの掛からない
ソフトを心がけています
何か工夫をしてみれば良いのかも
ありがとうございました
これからもよろしくお願いいたします
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでマクロでテキストデータを保存したい 4 2024/01/04 19:31
- Visual Basic(VBA) WORD VBA プログラム修正をお願いします。 2 2024/04/25 23:43
- Visual Basic(VBA) Excel VBA マクロ あるフォルダー内の複数のファイルを統合したいです 1 2024/02/19 21:37
- Visual Basic(VBA) Excel VBA マクロ シート名を変えずにA列にあるセル名の名前でファイルの分割をしたいです 3 2024/02/05 22:10
- Visual Basic(VBA) wordのマクロで思うように行きません(ファイル削除ができない) 3 2023/09/12 08:34
- Visual Basic(VBA) Vba UserFormを前面に出す方法を教えてください 1 2023/08/17 11:08
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) xmlドキュメントから別拡張子で保存したい 4 2023/09/12 11:08
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
このQ&Aを見た人はこんなQ&Aも見ています
-
とっておきの「夜食」教えて下さい
真夜中に小腹がすいたときにこっそり作るメニュー、こっそり家を抜け出して食べに行くお店… 人には言えない、けど自慢したい、そんなあなたの「とっておきの夜食」を教えて下さい。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
とっておきの「まかない飯」を教えて下さい!
飲食店で働く方だけが食べられる、とっておきの「まかない飯」。 働いてらっしゃる方がSNSなどにアップしているのを見ると、表のメニューには出てこない秘密感もあって、「食べたい!!」と毎回思ってしまいます。
-
IF文、条件分岐の整理方法
Visual Basic(VBA)
-
VBAなくなるの?
Visual Basic(VBA)
-
VBAコードのインデント表示
Visual Basic(VBA)
-
-
4
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
5
プログラミング
Visual Basic(VBA)
-
6
VBA コードどこがおかしいですか?
Visual Basic(VBA)
-
7
サブフォルダに格納されているファイルを、ファイル名ごとに条件分岐させたい
Visual Basic(VBA)
-
8
VBAの間違い教えて下さい
Visual Basic(VBA)
-
9
Excel VBA 選択範囲の罫線色の変更プロージャの動作速度の改善について
Visual Basic(VBA)
-
10
このプログラミング言語のfor分の文法構造を教えてください
その他(プログラミング・Web制作)
-
11
VBA レジストリの値の読み方について教えてください
Visual Basic(VBA)
-
12
Pythonのコードエラーについてです。
その他(プログラミング・Web制作)
-
13
文系のSE志望です。プログラミングを今から習得したいのですが、初めて学ぶのにオススメの言語があれば教
その他(プログラミング・Web制作)
-
14
C言語について。
C言語・C++・C#
-
15
プログラマーは誘惑にさらされる人生?
その他(プログラミング・Web制作)
-
16
Python言語のAnacondaの話です Windows 10 でアナコンダを入れました エディタ
その他(プログラミング・Web制作)
-
17
Excel VBA 定義されたプロージャ名、関数名の取得
Visual Basic(VBA)
-
18
Vba ファイル書き込み時に書き込みエラーを回避する方法を教えてください
Visual Basic(VBA)
-
19
VBA一覧取得 再投稿
Visual Basic(VBA)
-
20
【ExcelVBA】dictionaryの重複判断の基準(セル結合だと違う値として認識される)
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
unicode文字列(日本語)のファイ...
-
VBAで新しい日付順にファイルを...
-
テキストファイルを直接置換す...
-
access vbaでCSVファイルを文...
-
バッチでiniファイルの編集
-
UNIX コマンドへの引数について
-
ExcelVBAで以下のマクロを作成...
-
VB6側からテキストファイルをク...
-
特定フォルダ内のテキストファ...
-
VBAでPowerPointからExcelにデ...
-
複数行の文字列を変数として使...
-
Excel.VBA テキストファイルを...
-
コマンドプロンプトの「%1」と...
-
大量のフォルダからひとつのフ...
-
バッチでテキストファイルから...
-
コマンドプロンプトのエラーに...
-
バッチ処理でファイルの中身を...
-
公文書のxmlファイルの開き方が...
-
xcopyで特定のファイルのみをコ...
-
コマンドプロンプト標準出力と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
時間短縮のために、テキストフ...
-
複数行の文字列を変数として使...
-
特定フォルダ内のテキストファ...
-
fortranでのcsvファイルを出力...
-
VBAで新しい日付順にファイルを...
-
Excel.VBA テキストファイルを...
-
VB6側からテキストファイルをク...
-
VBAでPowerPointからExcelにデ...
-
テキストファイルの行頭に文字...
-
BCPユーティリティの使用法_...
-
バッチでiniファイルの編集
-
unicode文字列(日本語)のファイ...
-
テキストファイルを直接置換す...
-
ある文字列を含む行の抽出
-
RandomとBinaryモードの違い
-
access vbaでCSVファイルを文...
-
VB.NETでテキストファイルからH...
-
iniファイルとの比較(iniファイ...
-
ソースコードの差分がある行番...
-
VBSを用いてIPアドレスを取得し...
おすすめ情報