こんにちは。AutoCADの自動化という深淵な世界へようこそ。
「マクロの記録」ボタンを押すだけの世界から一歩踏み出し、自らの手でAutoCADを意のままに操る。その第一歩が、この「大量図面の一括バッチ処理」です。
今日は、ただコードを並べるのではなく、「なぜそのコードが必要なのか」「AutoCADが裏で何を考えているのか」という、エンジニアの美学とも言える本質的な部分を伝授します。ここを理解すれば、あなたはもう脱・初級者です。
—
1. 大量処理の「心臓部」を理解する
まず、私たちがこれから書くコードの構造をイメージしてください。大量の図面を処理する際、最も重要なのは「いかにしてAutoCADという巨大なエンジンを効率的に回すか」です。
重要なのは、`AcadApplication`と`AcadDocument`という二つの巨人です。
- AcadApplication: AutoCADそのもの。ドキュメントを開くための窓口。
- AcadDocument: 個別の図面ファイル。図形データが詰まった宝箱。
バッチ処理の基本戦略は、「窓口(Application)を一つ維持し、宝箱(Document)を次々と入れ替えていく」こと。これをループ処理で行います。
—
2. 実践!バッチ処理のテンプレートコード
これが、現場で戦うための堅牢なバッチ処理の雛形です。まずはコピーして、じっくり眺めてみてください。
Sub BatchProcessDrawings()
Dim fso As Object
Dim folder As Object
Dim file As Object
Dim doc As AcadDocument
Dim targetFolder As String
‘ 処理対象のフォルダを指定
targetFolder = “C:\Projects\Drawings\”
Set fso = CreateObject(“Scripting.FileSystemObject”)
Set folder = fso.GetFolder(targetFolder)
‘ 画面更新を停止して処理速度を劇的に向上させる(重要!)
ThisDrawing.Application.Visible = True
For Each file In folder.Files
‘ dwgファイルだけを対象にする
If LCase(fso.GetExtensionName(file.Path)) = “dwg” Then
‘ 図面を開く(Open メソッド)
Set doc = Documents.Open(file.Path)
‘ — ここにやりたい処理を書く —
Debug.Print “処理中: ” & doc.Name
‘ 例: 画層の変更、ブロックの挿入、PDF出力など
‘ ——————————-
‘ 図面を閉じる(保存して閉じるのが定石)
doc.Close SaveChanges:=True
End If
Next file
MsgBox “全図面の処理が完了しました!”
End Sub
—
3. なぜ「重くなる」のか? 伝説のエンジニアの知恵
初心者が陥りやすい罠がいくつかあります。ここを避けるだけで、あなたのコードは格段に安定します。
① 画面更新の停止(パフォーマンスの劇薬)
AutoCADは図面を開くたびに、画面を描画し直そうとします。これが処理を重くする最大の要因です。
- もし処理が極端に遅いと感じたら、`Application.Visible = False` を試してください。バックグラウンドで処理を行うことで、速度が劇的に向上します。
② メモリリーク(オブジェクトの解放)
`Set doc = Nothing` を忘れていませんか?
特にループ処理の中で多数のドキュメントを扱う場合、メモリを使い切ってしまうとAutoCADが突然クラッシュします。処理が終わるたびに、あるいはループを抜ける前に、オブジェクトを明示的に解放する習慣をつけましょう。
③ エラーハンドリング(強固な要塞)
100枚の図面を処理する際、たった1枚の破損ファイルでプログラムが停止したら目も当てられません。
`On Error Resume Next` を適切に使い、処理できなかった図面は「ログファイル(テキストファイル)」に名前を書き出すようにしましょう。成功したものだけを追うのではなく、「失敗したもの」を特定する仕組みこそがプロの仕事です。
—
4. 次のステップへの道標
このコードが動くようになったら、次は「PDF出力」や「特定の画層の一括削除」など、具体的な業務内容を `— ここにやりたい処理を書く —` の部分に書き込んでみてください。
AutoCAD VBAをマスターするコツは、「一度に完璧を目指さないこと」です。
1. まずはフォルダ内の図面名をイミディエイトウィンドウに出力する。
2. 次に、図面を開いて閉じるだけを行う。
3. 最後に、目的の加工処理を加える。
この手順を守れば、どんなに複雑な自動化も必ず実現できます。
AutoCADという巨大なツールを、あなたの意のままに操る。その快感を、ぜひ味わってください。困ったことがあれば、またいつでも質問に来てくださいね。あなたのコードが、あなたの業務を劇的に軽くすることを確信しています。
