【入門編】【初心者向け】AcadApplication.Versionプロパティで実行環境を特定し、AutoCADのバージョン毎の挙動差異を吸収する – AutoCAD VBA解析バイブル

スポンサーリンク

こんにちは!AutoCAD VBAの世界へようこそ。
マクロの記録ボタンを押すだけのステージから一歩抜け出し、自分の手でCADを自在にコントロールしたいあなたへ。

今回は、実務で絶対に避けて通れない「AutoCADのバージョン問題」をスマートに解決する極意をお伝えします。

ここをクリアすれば、あなたが書いたマクロが「別のパソコンで動かない!」という現場の悲劇を防げるようになりますよ。しっかりついてきてくださいね!

なぜ、AutoCADのバージョンを気にする必要があるのか?

AutoCADは毎年新しいバージョンがリリースされています。
そして、それに伴ってVBAが裏側で会話している「API(AutoCADを操作する仕組み)」も進化し続けています。

例えばこんな経験はありませんか?

  • 「最新のAutoCADで書いたマクロを、先輩の古いパソコンで動かしたらエラーで止まった」
  • 「新しい機能のプロパティを指定したら、型不一致エラーやオブジェクトが見つからないエラーが出た」

これは、古いバージョンのAutoCADが、新しい命令(プロパティやメソッド)を知らないからです。人間と同じで、知らない言葉を話されても困ってしまいますよね。

だからこそ、プログラム側で「今、自分たちはどのバージョンのAutoCAD上で動いているのか?」を自ら把握し、相手の能力に合わせて話し方(処理)を変えてあげる必要があるのです。

主役登場:`AcadApplication.Version` プロパティ

このバージョンを判定するために使うのが、`AcadApplication.Version` プロパティです。

AutoCADの頭脳である `Application` オブジェクト(AutoCADそのもの)に対して `.Version` と尋ねると、現在の内部バージョンを文字列(String型)で教えてくれます。

まずは、自分の環境でどの値が返ってくるのか、簡単なコードで確認してみましょう。

バージョン確認用のファーストステップ・コード

以下のコードをVBAエディタ(VBE)に貼り付けて実行してみてください。

Sub CheckAutoCADVersion()
‘ 現在のAutoCADのバージョンを取得してメッセージボックスに表示する
Dim ver As String
ver = ThisDrawing.Application.Version

MsgBox “このAutoCADの内部バージョンは [” & ver & “] です。”, vbInformation, “バージョン確認”
End Sub

実行すると、「24.1」や「25.0」といった数字が表示されたはずです。
(※ちなみに、AutoCAD 2025は「25.0」、AutoCAD 2024は「24.3」、AutoCAD 2023は「24.2」といった対応関係になっています)

実践:バージョンごとに挙動を分岐させる書き方

バージョンが取得できるようになったら、次は条件分岐(`If`文 や `Select Case`文)の出番です。

「もしバージョンが24.0以上なら新しい高度な処理をする、それ未満なら従来の安全な処理で代用する」という、マルチに対応できる互換性の高いコードの書き方を覚えましょう。

実用的なサンプルコード

以下のコードは、バージョンによって処理を安全に切り替えるテンプレートです。実務のコードにそのまま組み込めます。

Sub SafeExecutionByVersion()
On Error GoTo ErrorHandler

Dim appVersion As Double
‘ Versionプロパティは文字列で返るので、数値(Double型)に変換して比較しやすくする
appVersion = CDbl(ThisDrawing.Application.Version)

MsgBox “数値に変換されたバージョン: ” & appVersion, vbInformation

‘ バージョンに応じた処理の分岐
If appVersion >= 24.0 Then
‘ — AutoCAD 2021以降向けの最新・高速な処理 —
MsgBox “新しい機能(例: 高度なジオメトリ処理など)を実行します。”, vbInformation

‘ ここに最新バージョン専用のコードを書く
‘ 例: AcadApplicationの新しいメソッドやプロパティの利用

Else
‘ — AutoCAD 2020以前向けのフォールバック(代替)処理 —
MsgBox “互換性を考慮した従来の処理を実行します。”, vbInformation

‘ ここに古いバージョンでも動く確実なコードを書く

End If

Exit Sub

ErrorHandler:
MsgBox “エラーが発生しました: ” & Err.Description, vbCritical
End Sub

コードのポイント解説

1. `CDbl()` 関数による型変換
`Version` プロパティが返す値は “24.3” のような文字列です。これを `CDbl` で数値に変換しておくと、`>= 24.0` のような大小比較が非常に楽になります。
2. `On Error GoTo` によるセーフティネット
万が一、予期せぬ環境で未知のエラーを踏んでも、プログラムがフリーズせず綺麗にメッセージを出して終了するように組むのがプロの作法です。

現場でやりがちな「痛いミス」と対策

初心者のうちは、次のような罠にハマりがちです。気をつけてくださいね。

  • 罠1:文字列のまま比較してしまう
  • `If ThisDrawing.Application.Version >= “9.0”` のように文字列で比較すると、文字コード順の比較になってしまい、「9.0」が「10.0」より大きくなってしまう(”1″より”9″の方が文字コードが大きいため)というバグを生みます。必ず数式として比較するか、メジャーなバージョン番号を正確に把握しておきましょう。
  • 罠2:自分のパソコンだけでテストして満足する
  • あなたの最新PCで動いたからといって、社内の他の部署の古いPCでも動くとは限りません。配布する前には必ず、対象となる最低バージョンの環境でテストするか、今回紹介したバージョン分岐を入れておくことが重要です。

まとめ

今回は `AcadApplication.Version` を使った実行環境の特定と、バージョンごとの挙動制御について解説しました。

  • AutoCADのバージョンによって使える機能・APIは異なる。
  • `ThisDrawing.Application.Version` で内部バージョンを取得できる。
  • 取得したバージョンを数値に変換し、`If`文などで安全に処理を分岐させることで、誰の環境でもエラーを出さない「神マクロ」が作れる。

ここをクリアできれば、あなたのVBAスキルはもう「初心者」の域を脱し、現場で頼られる「自動化エンジニア」の第一歩を踏み出しています。

ぜひ、自分の図面や職場の環境に合わせてコードを試してみてくださいね。それでは、また次回の極意でお会いしましょう!

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