AutoCAD VBAで図面操作を自動化!「開く・保存」の極意とバージョン互換の罠
こんにちは。自動化の世界へようこそ。
AutoCAD VBAをマスターすることは、単なる「作業の短縮」ではありません。設計者の創造性を守り、退屈な反復作業から魂を解放するための「エンジニアリング」です。
今回は、自動化の第一歩である「図面を開く(Open)と保存(SaveAs)」という、最も基本的かつ、最も落とし穴の多い領域について解説します。
—
1. 図面を開く:基本のコード
AutoCADのVBAで図面を開くには、`Application.Documents` オブジェクトの `Open` メソッドを使います。
Sub OpenDrawing()
Dim doc As AcadDocument
Dim filePath As String
‘ 開きたいファイルのフルパスを指定
filePath = “C:\Projects\Design01.dwg”
‘ Documentsコレクションにファイルを追加して開く
‘ 第2引数の False は「読み取り専用で開かない」という意味です
Set doc = Application.Documents.Open(filePath, False)
‘ 開いた図面をアクティブにする
doc.Activate
End Sub
ここがポイント!
- `Application.Documents`: 現在開いているすべての図面を管理する親玉です。
- `Open` メソッド: 第一引数はフルパス。ここが間違っているとエラーになります。
- 非表示で開く: もし画面に表示させずに裏側で処理したい場合は、`Application.Documents.Open(filePath, False)` の後に `doc.Visible = False` を指定することも可能です(ただし、メモリ管理には注意が必要です)。
—
2. バージョン互換という「見えない壁」
さて、ここからが本題です。
例えば、「最新のAutoCAD(2025など)で保存したDWG」を、「AutoCAD 2018」で開こうとしてエラーになった経験はありませんか?
DWGファイルには「バージョン」があり、古いAutoCADは新しい形式のDWGを解釈できません。
なぜエラーが起きるのか?
AutoCADのファイル形式は数年おきに更新されます。新しい機能(新しいオブジェクトタイプなど)が含まれたDWGを古いソフトで開くと、AutoCADは「未定義のデータがある」と判断し、読み込みを拒否するか、最悪の場合は図面が破損します。
—
3. 回避策:VBAで「バージョンを指定して保存」する
自動化エンジニアとして大切なのは、「常に最悪の環境(古いバージョン)でも読み込めるようにしておく」という防衛的な設計思想です。
`SaveAs` メソッドを使う際、第2引数で保存形式(ファイルバージョン)を指定できます。
Sub SaveAsSpecificVersion()
Dim doc As AcadDocument
Set doc = ThisDrawing ‘ 現在開いている図面を対象にする
‘ AutoCAD 2018形式で保存する例
‘ ac2018_dwg を指定することで、古いバージョンでも開けるようにする
doc.SaveAs “C:\Projects\Design01_Export.dwg”, ac2018_dwg
MsgBox “互換性を考慮して保存しました。”
End Sub
指定できる主な定数(AcSaveAsType)
- `ac2018_dwg`: AutoCAD 2018以降の標準
- `ac2013_dwg`: AutoCAD 2013~2017
- `ac2010_dwg`: AutoCAD 2010~2012
- `acR14_dwg`: 非常に古い図面との互換用(最終手段)
—
4. 初学者が陥りやすいエラーと対策
エラー1:「ファイルが見つかりません」
パスの書き間違いが9割です。VBAコード内で `Dir(filePath)` を使って、ファイルが存在するか事前にチェックする癖をつけましょう。
If Dir(filePath) = “” Then
MsgBox “指定されたパスにファイルがありません!”
Exit Sub
End If
エラー2:メモリの開放忘れ
たくさんの図面を順番に開いて処理する際、開いた図面を閉じないとAutoCADはメモリを食いつぶし、やがてクラッシュします。処理が終わったら必ず `Close` してください。
‘ 処理が終わったら閉じる(保存せずに閉じる場合は False)
doc.Close True
—
まとめ:エンジニアとしての第一歩
今回のポイントを整理します。
1. 図面操作は `Documents` コレクションを経由する。
2. 相手の環境に合わせて `SaveAs` でバージョンを下げるのがプロの流儀。
3. ファイル操作の前には必ず `Dir` 関数で存在確認をする。
AutoCAD VBAは、一度仕組みを理解してしまえば、あなたの分身となって何千枚もの図面を処理してくれる最強のパートナーになります。まずは今回紹介したコードを、ご自身の環境で試してみてください。
「動いた!」という感動こそが、エンジニアへの入り口です。
もしコードがうまく動かなかったり、さらに高度な制御(図面内のブロックを一括置換したい等)を知りたくなったら、いつでもまた相談してくださいね。応援しています!
