【入門編】【初心者向け】AutoCAD VBAで図面を開く基本:最新版DWGを旧バージョンで開く際の注意点 – AutoCAD VBA解析バイブル

スポンサーリンク

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は、一度仕組みを理解してしまえば、あなたの分身となって何千枚もの図面を処理してくれる最強のパートナーになります。まずは今回紹介したコードを、ご自身の環境で試してみてください。

「動いた!」という感動こそが、エンジニアへの入り口です。
もしコードがうまく動かなかったり、さらに高度な制御(図面内のブロックを一括置換したい等)を知りたくなったら、いつでもまた相談してくださいね。応援しています!

タイトルとURLをコピーしました