Excel VBAでAutoCADを操作する方法|AutoCAD VBAマクロの作成方法

本ページではExcel VBAでAutoCADを操作する方法を解説していきます。
AutoCADとExcelと連携することで作業内容によっては非常に効率を上げることができます。Excel操作のコードを作成するにはExcel VBAの知識が必要になってくるので、Excel VBAに知見の無い方はある程度Excel VBAの知識を付けてから始めることをおすすめします。

本ページで学ぶことのできる内容は以下のとおりです。

 Excel VBAでAutoCADを操作する方法

また下記ページではAutoCAD VBAでExcelを操作する方法も紹介しているので合わせて参照ください。

 

AutoCAD VBAの事前準備

Excel VBAでAutoCADを操作するには以下の2つの準備をする必要があります。

icon-check-square  Excel VBAにAutoCADのライブラリを読み込む
icon-check-square  Excel VBAにAutoCADを呼び出すための構文を書く

このうちライブラリ読み込みは必須ではありませんが、読み込むとコードを作成する際にAutoCAD VBA関連の型宣言(AcadModelSpaceやAcadEntityなど)や入力候補の表示を行うことができるようになるので、深く理解できるまでは基本的に読み込ませておくことをおすすめします。
 

Excel VBAにAutoCADのライブラリを読み込む

Excel VBAでAutoCADを操作するには大前提として「参照設定というものでExcelにAutoCAD VBAのオブジェクト認識することができるように「ライブラリ」を読み込ませる必要があります

デフォルトの場合、Excel VBAではExcel専用のオブジェクト(WorkSheet,Cellsなど)のみを、AutoCAD VBAではAutoCAD専用のオブジェクト(AcadEntityなど)のみしか読み込むことができません。これをExcel VBAからExcel専用のオブジェクトだけでなくAutoCAD専用のオブジェクトも読み込むことができるようにすればExcel VBAでAutoCADを操作することができるようになります。

   ライブラリとは   

「ライブラリ」とは簡単にいうとVBAのオブジェクトがまとめられた本のようなものです。
ExcelはExcel VBAに関する本、AutoCADはAutoCAD VBAに関する本しか読んでいないため、ExcelはAutoCAD VBAに関する知識が一切ありません。そのためExcelに対してAcadEntityの名前を変更したいと指示しても「AcadEntityって何?」となりエラーが発生してしまいます。
 
しかし、ExcelにExcel VBAに関する本だけでなくAutoCAD VBAに関する本も読ませてあげることで、ExcelはAcadEntityが何ものなのかを理解することができるようになります。
この、アプリケーションに何の本(ライブラリ)を読ませるのかを指定するのが参照設定です。
 
AutoCAD以外にも本が用意されているアプリケーションであれば、その本をExcelに読ませてあげることでそれらのアプリケーションを操作することも可能になります。

※厳密にいえば参照設定はあくまでもExcelのVBE上で外部アプリケーションのオブジェクトの型を認識できるようにするためのものであり、参照設定がされていなくても正しいコードが書けていて、必要なライブラリが同端末内に存在していれば外部アプリケーションの操作自体は可能です。
 

 icon-gear ライブラリの設定

VBEのメニューバー>[ツール]>[参照設定]を押下して参照設定ウィンドウを表示させます。
参照可能なライブラリファイルのリストからExcel VBAライブラリにチェックを付けます。
AutoCAD VBAライブラリは「AutoCAD ○○ Type Library」です。(※○○はバージョンで変動)

チェックの付与ができたらウィンドウ右上の[OK]ボタンを押下することで参照設定完了です。
 

Excel VBAにAutoCADを呼び出すための構文を書く

ライブラリの設定ができたら以下のコードを記載します。
コードを書かないとライブラリを読み込んでいいても、AutoCADは使えないので注意してください。

現在開かれているAutoCADを取得するにはGetObject関数を使い、上記コードの通り記載します。CreateObject関数を使うことで新規で起動したAutoCADを取得することもできますが、Excelとは違い起動に時間がかかるため、基本的には現在開かれているAutoCADを取得する処理が利用されます。

上記コードにより、Excel VBA内で変数「oAutoCAD」をAcadApplicationオブジェクトとして利用することができるようになりました。AcadApplicationはExcel VBAでいうApplicationにあたる最上位のオブジェクトのため、AcadApplicationからAuoCAD VBAのどのオブジェクトにでもアクセスすることができるようになります。たとえば下記のコードはAutoCADのアクティブドキュメントの名称(Drawing1.dwgなど)をExeclのシート1のA1セルに書き出すことができます。

 icon-code  アクティブドキュメント名をセルに書き出し 

Sheet1.Cells(1, 1).Value = oAutoCAD.ActiveDocument.Name

 

サンプルコード

ここではサンプルとして「ExcelのA1セルの文字列をAutoCAD上にマルチテキストとして出力するマクロ」を紹介します。コードは以下のとおりです。マルチテキストの作成方法の詳細についてはダイナミックテキストとマルチテキストの作成と編集ページを参照ください。

AutoCAD VBAではアクティブなドキュメントはThisDrawingで取得することができますが、Excel VBAから取得するにはAcadApplicationオブジェクトから順に取得する必要があります。その代わり、Excel VBAなので現在アクティブのブックはThisWorkbookで取得することができます。
 

まとめ

今回の内容をまとめると以下のとおりです。

 Excel VBAでAutoCADを操作するには以下の2つを行う必要がある

    ・Excel VBAにAutoCAD VBAのライブラリを読み込む (任意)
    ・Excel VBAにAutoCADを呼び出すための構文を書く

Excel VBAでもAutoCADを操作する書き方はAutoCAD VBAと同じ

Excel VBAもAutoCAD VBAも同じVBAであるため、それぞれを連携させた処理を行わせることは可能です。これはPowerPointやAccess、CATIAなどのVBAを扱うことのできるアプリケーションすべてにいえることです。どのアプリケーションのVBAから始めても基本的には同じ処理を実装することができるため、“ユーザーにどのアプリケーションのVBAから実行をさせるか”が重要になってきます。

AutoCAD VBAでExcelを操作する方法も紹介しているので合わせて参照ください。

 
メインページへ戻る
 

 関連書籍

AutoCAD, Excel, VBA

Posted by Lic