AutoCAD VBAの流儀:手作業の「保存」に終止符を。一括自動保存をマスターしよう
こんにちは。AutoCADの自動化の世界へようこそ。
日々、何十枚もの図面を開いては「名前を付けて保存」を繰り返す……そんなルーチンワークに、あなたの貴重な時間を捧げていませんか?
「マクロの記録」に頼る時代は終わりです。今日は、AutoCAD VBAの真髄である「図面オブジェクトの制御」を学び、指定フォルダへDWGやDXFを一括保存するシステムを構築しましょう。これをマスターすれば、あなたの設計業務は劇的に効率化されます。
—
1. なぜ「手動保存」を自動化するのか?
エンジニアにとって、ファイル操作は単なる作業ではなく「情報のライフサイクル管理」です。
手動での保存は、ヒューマンエラー(上書き保存のミス、命名規則の不一致)の温床です。VBAで制御することで、「誰がいつ実行しても、同じ命名規則で、確実に指定先へ格納する」という堅牢な環境が手に入ります。
—
2. 実践:一括保存のためのVBAコード
まずは、現在開いている図面を、指定したフォルダへ「日付+ファイル名」のルールで保存するコードを見てみましょう。
Sub SaveDrawingAutomated()
‘ — オブジェクト変数の宣言 —
Dim doc As AcadDocument
Dim savePath As String
Dim fileName As String
Dim fullPath As String
‘ 現在のドキュメントを取得
Set doc = ThisDrawing
‘ 保存先のパス(※各自の環境に合わせて変更してください)
savePath = “C:\AutoCAD_Output\”
‘ 命名規則:現在の日付_元のファイル名.dwg
fileName = Format(Date, “yyyyMMdd”) & “_” & doc.Name
fullPath = savePath & fileName
‘ — 重要:保存処理 —
‘ SaveAsメソッドを使用します
‘ ac2018_DWG などの定数は、バージョン互換を保つために重要です
On Error Resume Next ‘ エラー発生時の強制終了を防ぐ
doc.SaveAs fullPath, ac2018_DWG
If Err.Number <> 0 Then
MsgBox “保存に失敗しました。フォルダが存在するか確認してください。”, vbCritical
Else
MsgBox “保存完了: ” & fullPath, vbInformation
End If
On Error GoTo 0
End Sub
コードの解説:ここがプロの視点
- `ThisDrawing`: 現在操作中の図面を指す最も基本的なオブジェクトです。まずはここから全てが始まります。
- `SaveAs` メソッド: 最も重要なメソッドです。第2引数でフォーマット(`ac2018_DWG` や `acDXF_R12` など)を指定することで、社内基準に合わせたバージョン互換制御が可能です。
- `On Error`: 現場のコードで最も大切なのがこのエラーハンドリングです。フォルダが存在しないだけでプログラムが止まるのは、自動化エンジニアとしては「未熟」の証です。
—
3. 初心者が陥りやすい「3つの壁」
このコードを書いていく中で、多くの人が突き当たる壁があります。
1. フォルダが存在しないエラー: VBAは「無いフォルダへファイルを保存しようとする」と容赦なくエラーを吐きます。事前に `Dir` 関数でフォルダの存在を確認するロジックを挟むのがプロの定石です。
2. 拡張子の二重付け: `doc.Name` には `.dwg` が含まれている場合があります。`Replace` 関数などで適切に処理しないと、`図面.dwg.dwg` となってしまいます。
3. バージョン互換: 取引先によって必要なDWGのバージョンは異なります。`SaveAs` の定数を変えるだけで、AutoCADの保存ダイアログを一切触らずに変換可能です。
—
4. さらなる高みへ:一括処理のヒント
今回は「現在の図面」を対象にしましたが、応用編では `Documents` コレクションをループ処理することで、フォルダ内のDWGをすべて開いて一括でDXFに変換する……といった「完全自動化」も可能です。
次のステップへのアドバイス
- FileSystemObject (FSO): ファイルの検索やフォルダの作成には、VBA標準よりもFSOを使うとコードが非常にスマートになります。
- ログ出力: 何枚保存できたか、どこでエラーが出たかをテキストファイルに書き出す「ログ機能」を付け加えれば、チームメイトからも一目置かれるツールになります。
—
最後に:自動化は「設計」の味方です
AutoCAD VBAは、単にキーボード入力を代行するだけのものではありません。あなたの意志をAutoCADに伝え、確実に実行させるための「インターフェース」です。
まずはこのコードをコピー&ペーストして、自分のPCのデスクトップに保存先を作って実行してみてください。「保存」という当たり前の作業が自動化された瞬間、あなたの設計時間は少しだけ自由になります。
わからないことがあれば、いつでも聞いてくださいね。一緒に最強の自動化環境を構築していきましょう!
