【入門編】【上級】複数バージョンのAutoCADが共存する環境で、特定のバージョンを指定してAcadApplicationを起動 – AutoCAD VBA解析バイブル

スポンサーリンク

こんにちは!AutoCAD VBAの世界へようこそ。
「マクロの記録」から一歩踏み出し、自分の手でCADを自在に操りたい――そう思ってこのページにたどり着いたあなたは、すでにエンジニアとしての素晴らしい第一歩を踏み出しています。

今回は、実務の現場で避けて通れない「複数バージョンのAutoCADが共存する環境でのバージョン指定起動」について、徹底的に解説していきます。

「同じPCにAutoCAD 2023と2025が入っているのに、なぜか古い方でマクロが動いてしまう…」
「新しいAPIの機能を使いたいのに、エラーで弾かれる…」

そんな悩みを抱えたことはありませんか?ここをクリアすれば、あなたはもう初心者ではありません。一緒に本質を学んでいきましょう!

1. なぜ複数バージョン環境で「うっかりミス」が起きるのか?

皆さんは、VBAからAutoCADを起動する際、次のようなコードを書いたことがありませんか?

‘ よくある一般的なコード
Dim acadApp As Object
Set acadApp = CreateObject(“AutoCAD.Application”)

この `CreateObject(“AutoCAD.Application”)` という書き方、一見するとシンプルで良さそうに見えますよね。しかし、ここに大きな落とし穴があります。

このバージョン番号のついていない「無印(ジェネリック)」のProgIDを指定すると、Windowsのレジストリに登録されている「最後にインストール(またはアクティブ化)されたAutoCAD」が気まぐれに呼び出されてしまうのです。

開発現場において、「意図しないバージョンが起動して図面が壊れた」「新機能のAPIを呼び出したら型ミスマッチエラーになった」というのは、エンジニアにとって冷や汗ものの一大インシデントです。これを完全にコントロールするのが、今回学ぶ「バージョン明示的指定」の技術です。

2. ProgIDのバージョンをハッキリ指定する

AutoCADのCOMオブジェクト(API)は、バージョンごとに固有の「住所(ProgID)」を持っています。

例えば、以下のようになります。

  • AutoCAD 2022:`AutoCAD.Application.24.1`
  • AutoCAD 2023:`AutoCAD.Application.24.2`
  • AutoCAD 2024:`AutoCAD.Application.25.0`
  • AutoCAD 2025:`AutoCAD.Application.26.0`

※内部のメジャーバージョンと年号は少しずれていますが、これがAutoCADの歴史の面白いところです。

これを `CreateObject` の引数に直接渡してやります。

実装コード:AutoCAD 2025を名指しで起動する

Sub StartSpecificAutoCADVersion()
Dim acadApp As Object
Const targetProgID As String = “AutoCAD.Application.26.0” ‘ AutoCAD 2025を指定

On Error GoTo ErrorHandler

‘ 既に起動しているプロセスを捕まえるか、新規に指定バージョンを起動する
‘ ※GetObjectを使うと既に立ち上がっているインスタンスを取得できます
Set acadApp = GetObject(, targetProgID)

MsgBox “指定したバージョンのAutoCADは既に起動しています。”, vbInformation, “接続成功”

ErrorHandler:
If Err.Number <> 0 Then
‘ 起動していなければ新しく指定バージョンで立ち上げる
Err.Clear
Set acadApp = CreateObject(targetProgID)

If Err.Number <> 0 Then
MsgBox “指定されたバージョン(” & targetProgID & “)のAutoCADが見つかりません。”, vbCritical, “起動失敗”
Exit Sub
End If
End If
On Error GoTo 0

‘ 起動を確認できたら、可視化して図面を追加する
acadApp.Visible = True
Dim acadDoc As Object
Set acadDoc = acadApp.Documents.Add

MsgBox “AutoCAD 2025の制御に成功しました!”, vbInformation, “完了”
End Sub

このコードのミソは、`GetObject` で既存のインスタンスを探し、無ければ `CreateObject` で新規起動するという、実務で必須の「二段構えの安全設計」にあります。ここを押さえておくだけで、マクロの堅牢性が段違いに跳ね上がります。

3. 現場でよくある「陥りやすい罠」と回避策

バージョン指定をマスターしたあなたへ、先輩エンジニアから現場で役立つ実践的な知見をいくつかシェアしておきます。

トラップ①:32bit版と64bit版の混在

現代の環境ではほぼ64bit版しかありませんが、古いサードパーティ製ツールと同居している場合、Office(Excel VBA)のビット数とAutoCADのビット数が異なると、そもそもCOM接続自体が失敗します。「ExcelもAutoCADも64bit版で統一する」これが鉄則です。

トラップ②:バージョン違いによるメソッドの仕様変更

AutoCAD 2022と2025では、背後で動いているObjectARXやCOM APIの仕様が微かに異なる場合があります。特にレイアウト操作やパブリッシュ機能を使うときは、ターゲットとする最低バージョンを社内でしっかり規定しておきましょう。

まとめ:ここをクリアすれば、もう怖くない!

今回は、複数バージョンが共存する環境で、特定のAutoCADを狙い撃ちして起動・制御するテクニックを解説しました。

  • 「`AutoCAD.Application`」という無印の指定は、複数環境では使わない!
  • `AutoCAD.Application.26.0` のように、バージョン番号(ProgID)を明示する。
  • `GetObject` と `CreateObject` を組み合わせて、既に起動中のプロセスもうまくハンドリングする。

この3つを意識するだけで、あなたの書くVBAコードは一気に「プロのエンジニアのコード」へと生まれ変わります。

複雑な図面処理や自動化も、こうした足元(基盤)のコントロールさえ固めておけば怖くありません。ぜひ、ご自身の開発環境で試してみてくださいね。ここをクリアできれば、AutoCAD VBAの基本はもうバッチリです!

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