概要 - オートメーション プロジェクトをマイグレートする(ActiveX)

通常、VBA IDE でまたは Visual Studio を使用して作成した AutoCAD オートメーション プロジェクトを AutoCAD 2024 で使用できるようにするためには、若干の更新が必要な場合があります。ActiveX を使用した AutoLISP プログラムも更新が必要になる場合がありますが、これはあまり一般的ではありません。

ActiveX API に対して行われた変更の一般的な履歴は、「ActiveX API の履歴」を参照してください。

注: AutoCAD LT では、Visual Basic for Applications (VBA)プログラミングはサポートされていません。

最新のリリースの新しいオブジェクトと変更されたオブジェクト

新しいオブジェクト

新しいオブジェクトは追加されませんでした。

変更されたオブジェクト

既存のオブジェクトに対して行われた変更は、次の表のとおりです。

AutoCAD 2023 AutoCAD 2024 変更の概要

AutoCAD のみ:

AutoCAD.Application.24 または AutoCAD.Application.24.2

AutoCAD のみ:

AutoCAD.Application.24 または AutoCAD.Application.24.3

インストールした最新のライブラリに基づいて AutoCAD アプリケーションインスタンスを作成するには、AutoCAD.Application を使用します。

確実に AutoCAD 2024 のインスタンスが作成されるようにするには、AutoCAD.Application.24.3 を使用してください。

AutoCAD ActiveX ライブラリ リファレンス(AutoCAD のみ)

AutoCAD 図面環境や、Microsoft Word または Excel など VBA をサポートしているアプリケーションで作成された VBA プロジェクトでは、AutoCAD ActiveX API への参照を更新しなければならない可能性があります。AutoCAD ActiveX API を使用している Managed .NET および ObjectARX アプリケーションも、更新しなければならない可能性があります。

次の表に、AutoCAD ベースの製品のリリースごとにサポートされている AutoCAD オブジェクト ライブラリのファイル名を示します。

リリース リリース番号 AutoCAD タイプ ライブラリ AutoCAD/ObjectDBX タイプ ライブラリ
AutoCAD 2024 24.3 acax24<言語>.tlb axdb24<言語>.tlb
AutoCAD 2023 24.2 acax24<言語>.tlb axdb24<言語>.tlb
AutoCAD 2022 24.1 acax24<言語>.tlb axdb24<言語>.tlb
AutoCAD 2021 24.0 acax24<言語>.tlb axdb24<言語>.tlb
AutoCAD 2020 23.1 acax23<言語>.tlb axdb23<言語>.tlb
AutoCAD 2019 23.0 acax23<言語>.tlb axdb23<言語>.tlb
AutoCAD 2018 22.0 acax22<言語>.tlb axdb22<言語>.tlb
AutoCAD 2017 21.0 acax21<言語>.tlb axdb21<言語>.tlb
AutoCAD 2016 20.1 acax20<言語>.tlb axdb20<言語>.tlb
AutoCAD 2015 20.0 acax20<言語>.tlb axdb20<言語>.tlb
AutoCAD 2014 19.1 acax19<言語>.tlb axdb19<言語>.tlb
AutoCAD 2013 19.0 acax19<言語>.tlb axdb19<言語>.tlb
AutoCAD 2012 18.2 acax18<言語>.tlb axdb18<言語>.tlb
AutoCAD 2011 18.1 acax18<言語>.tlb axdb18<言語>.tlb
AutoCAD 2010 18.0 acax18<言語>.tlb axdb18<言語>.tlb
AutoCAD 2009 17.2 acax17<言語>.tlb axdb17<言語>.tlb
AutoCAD 2008 17.1 acax17<言語>.tlb axdb17<言語>.tlb
AutoCAD 2007 17.0 acax17<言語>.tlb axdb17<言語>.tlb
AutoCAD 2006 16.2 acax16<言語>.tlb axdb16<言語>.tlb
AutoCAD 2005 16.1 acax16<言語>.tlb axdb16<言語>.tlb
AutoCAD 2004 16.0 acax16<言語>.tlb axdb16<言語>.tlb
AutoCAD 2002 15.2 acax15.tlb axdb15.tlb
AutoCAD 2000i 15.1 acax15.tlb axdb15.tlb
AutoCAD 2000 15.0 acax15.tlb axdb15.tlb
注: <言語> は、オブジェクト ライブラリの言語を表します。たとえば、<言語> は、英語版では enu、フランス語版では fra となります。

次に、旧リリースで使用されているその他のAutoCAD ActiveX API のファイル名と、最新リリースで置き換えられたオブジェクト ライブラリ ファイルを示します。

旧リリースからの一般的な変更(AutoCAD のみ)

COM ライブラリ参照の更新に加えて、次の変更により旧リリースのプログラムをマイグレートしなければならない可能性があります。

64 ビットのマイグレーション(AutoCAD のみ)

AutoCAD 2014 から、AutoCAD はネイティブ 64 ビット サポートを提供する VBA 7.1 に対応しています。この変更により、VBA プロジェクトの 2 つのバージョン(32 ビット版と 64 ビット版)を修正する必要があります。AutoCAD 2014 より前のリリースでは、VBA は、既存の 32 ビット VBA プロジェクトを AutoCAD 64 ビットで予期したように動作させるための 32 ビットから 64 ビットへの「変換」レイヤを使用してアクセスされる外部プロセス コンポーネントとして実行されていました。

VBA 64 ビットは、フォームに異なるライブラリおよびコントロールを使用する必要があります。すべての VBA ライブラリとフォーム コントロールが 64 ビットで使用できるとは限らず、Windows 32 ビットと Windows 64 ビットで正常に機能するように、コードの一部を調整する必要がある可能性があります。

VBA プロジェクトが AutoCAD 2009 から AutoCAD 2013 用に開発されている場合は、VBA プロジェクトの最新リリースにマイ グレートするときに、次の点を考慮する必要があります。

オブジェクト ID を処理する

AutoCAD 2009 の 64 ビット版から AutoCAD 2013 の 64 ビット版まで、オブジェクト ID は 64 ビット整数型(__int64)で表現されました。32 ビット VBA でこれらの値にアクセスすると、コンパイル エラーが発生しました。この解決策として、旧メソッド名の末尾に "32" を付け加えた新しいメソッド名が作成されました(たとえば、ObjectID32()OwnerID32())。これらのメソッドでは、内部的に 64 ビット整数型に変換された LONG 型が使用されました。

正確に言うと、VBA が必要とする各オブジェクト ID に対して、32 ビット オブジェクト ID が内部的に作成されました。この ID は、実際の 64 ビット ID に対応付けられており、VBA コードから AutoCAD に 32 ビット ID が返された場合、内部的には 64 ビット オブジェクト ID が返され、使用されました。

次に、32 ビット オブジェクト ID の移植コードの例を示します。

元のコード 64 ビット(AutoCAD 2009 から AutoCAD 2013 まで)

Dim splineObj As AcadSpline
Dim objectID As Long
objectID = splineObj.objectID32
Dim tempObj As AcadObject
Set tempObj = ThisDrawing.ObjectIdToObject32(objectID)

AutoCAD 2014 の 64 ビット版以降の互換に移植したコード

Dim splineObj As AcadSpline
Dim objectID As Long
objectID = splineObj.objectID
Dim tempObj As AcadObject
Set tempObj = ThisDrawing.ObjectIdToObject(objectID)

VBA アプリケーションは、オブジェクト ID ではなく、オブジェクトのハンドルを使用することもできます。次の例に、オブジェクト ID の代わりにハンドルを使用する方法を示します。

オブジェクトのオブジェクト ID を使用した元のコード

Dim splineObj As AcadSpline
Dim objectID As Long
objectID = splineObj.objectID
Dim tempObj As AcadObject
Set tempObj = ThisDrawing.ObjectIdToObject(objectID)

オブジェクトのハンドルを使用した変更後のコード

Dim splineObj As AcadSpline
Dim objectHandle As String
objectHandle = splineObj.Handle
Dim tempObj As AcadObject
Set tempObj = ThisDrawing.HandleToObject(objectHandle)
付録 - 32 ビットのメソッド(AutoCAD 2014 の 64 ビット版で廃止)
注: オブジェクト ID は、AutoCAD 32 ビット版の LONG データ型には変換されなくなりました。

AutoCAD 2009 の 64 ビット版から AutoCAD 2013 の 64 ビット版で 32 ビットの代わりに使用されたメソッドの一覧を次の表に示します。

64 ビット システムの VBA メソッド
メソッド - AutoCAD 2009 から 2013 メソッド - AutoCAD 2014 以降 使用法
GetBlockAttributeValue32 GetBlockAttributeValue 32 ビット オブジェクト ID を使用して、ブロックに含まれる属性定義オブジェクトの指定したブロック セルの属性値を返します。
GetBlockTableRecordId32 GetBlockTableRecordId ブロックタイプ セルと nContent に関連付けられたブロック テーブル レコードの 32 ビット オブジェクト ID を取得します。
GetFieldId32 GetFieldId 指定したセルに関連付けられたフィールド オブジェクトの 32 ビット オブジェクト ID を返します。
GetGridLinetype32 GetGridLinetype グリッド線種オブジェクトの 32 ビット オブジェクト ID を返します。
Key32 Key 64 ビット システムに対する CopyObjects 操作で、ソース オブジェクトのオブジェクト ID を指定します。
ObjectID32 ObjectID 64 ビット システムのオブジェクト ID を取得します。
ObjectIDtoObject32 ObjectIDtoObject 64 ビット システムの指定したオブジェクト ID に対応するオブジェクトを取得します。
OwnerID32 OwnerID 64 ビット システムのオーナー(親)オブジェクトのオブジェクト ID を取得します。
SetBlockAttributeValue32 SetBlockAttributeValue 32 ビット オブジェクト ID を使用して、ブロックと nContent を含む属性定義オブジェクトの指定したブロック セルの属性値を設定します。
SetBlockTableRecordId32 SetBlockTableRecordId ブロックタイプ セルと nContent に関連付けられた 32 ビット オブジェクト ID ブロック テーブル レコードを設定します。
SetFieldId32 SetFieldId 指定したセルと nContent に関連付けられたフィールド オブジェクトの 32 ビット オブジェクト ID を設定します。
SetGridLinetype32 SetGridLinetype グリッド線種オブジェクトの 32 ビット オブジェクト ID を設定します。
Value32 Value 64 ビット システムに対する、プロパティの現在値、または新しく作成されたクローン オブジェクトのオブジェクト ID を指定します。