いつもお世話になります
今、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の出力先にメモリを使えないかと相談しました
以上、良いご回答を期待しています
よろしくお願い申し上げます
- 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
- 今の自分の気分スタンプを選ぼう!
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
スクリプトファイルを作成する処理と、スクリプトファイルを実行する処理を分けるのではダメなんですか?
スクリプトファイルの実行時はどのようなコマンドを使用しても0.1~0.2秒程の待機を行わないとエラーになるのでしょうか?
No.4
- 回答日時:
stmの出力を短縮して1分短縮を期待したい、なんですね。
処理を大別すると
(1) For ループ
(2) SaveToFile, Close
(3) SendKeys
ですね。
VBAもAutocadも詳しくないのですが、
SendKeysによる Autocad の処理が十分に早いならば、(2)を止めて (1)の中で1行ずつ(3)を含める案も思い浮かびます。
(処理順が問題になる気はしますが…)
※ Autocad がファイル入力しか受け付けないならば、ファイルに書き出すしかないですね…
No.3
- 回答日時:
この場合はwaitが不要になる
早速のご回答ありがとうございます
Excelから別のソフトをコントロールすることは
処理速度の違いで良くエラーが発生します
(計算速度とI/O出力速度はかなり違います)
何度もテストを重ねてWaitタイムを決めています
他人に使わせるのエラーの発生は極力なくすことを
心がけています
ご意見ありがとうございました
これからもよろしくお願い申し上げます
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ランキング
-
Excel VBA 選択範囲の罫線色の...
-
エクセルのマクロについて教え...
-
Outlookの「受信日時」「件名」...
-
2つのマクロでチェックボックス...
-
ExcelVBA シート名を複数セルか...
-
Excelで画像URLを1つずつセル...
-
VBA指定行削除
-
エクセルVBAにて =A1=B1とすれ...
-
Outlookの「受信日時」「送信者...
-
ワードVBA どの表か知ることは...
-
エクセルのマクロについて教え...
-
エクセルのVBAコードについて教...
-
Excel VBA 定義されたプロージ...
-
郵便番号検索APIにてget Elemen...
-
VBA実行後に元のセルに戻りたい
-
エクセルのマクロについて教え...
-
VBA ユーザーフォーム ボタンク...
-
Excel VBA マクロ あるフォルダ...
-
Vba SelStart、SelLen教えてく...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAなくなるの?
-
VBAでCOPYを繰り返すと、処理が...
-
vba 削除
-
プログラミング
-
Excelのマクロについて教えてく...
-
Excelのマクロについて教えてく...
-
エクセルのVBAコードについて教...
-
久しぶりのプログラミング
-
ユーザーフォームに別シートか...
-
エクセルVBAコードで教えて下さ...
-
VBA 別ブックからコピペしたい...
-
ExcelのVBAコードについて教え...
-
VBAコードについて教えてくださ...
-
vba アクティブシートの名前変...
-
Excelのマクロについて教えてく...
-
エクセルVBA
-
Geogebraの操作方法について
-
マクロの記録を使用したマクロ...
-
Excel(M365) Vlookup/セル反転(...
-
Excel 範囲指定スクショについ...
おすすめ情報