図面内のブロック集計結果は、AutoCAD ノーコード ソリューション:データ書き出し でご紹介した方法で、ブロック属性やジオメトリのプロパティ情報を EXCEL ファイルの書き出すことが出来ます。
データ書き出し機能で作成される EXCEL ファイルは至ってシンプルはものなので、テーブルの書式設定やセルのスタイルなどの脚色は一切ありません。

もし、EXCEL への情報書き出しの機能自体をカスタマイズしたい場合には、API を使ったカスタマイズが必要です。ただ、このようなカスタマイズを計画する場合、注意が必要になる点があります。まずは、AutoCAD を主体に、どのような API を利用出来るのかを考察してみます。
AutoCAD には 5 つの API が用意されています。登場順に AutoLISP、ObjectARX、ActiveX オートメーション、.NET API、JavaScript API です。いずれも AutoCAD にロードして利用するアドイン(別名 アドオン、プラグイン)アプリの開発に使用されます。一方、EXCEL などのオートデスク外の他社製品と親和性が高く、API を使ったコントロールが可能なのは、ActiveX オートメーションになります。
ActiveX オートメーションは、Mircrosoft の提供するコンポーネント テクノロジ である COM (Component Object Model) を利用した API です。ActiveX オートメーションの仕様には、アプリの持つさまざまな機能を公開する COM サーバー と、公開された機能を参照して再利用する(プログラムして再利用する)COM クライアント の 2 つの能力が用意されています。
AutoCAD の場合、AutoCAD が COM サーバーの役割を持ち、COM クライアント機能を持った AutoCAD 内の VBA 環境で AutoCAD 自身の機能を利用する(プログラムして再利用する)ことができます。

ActiveX オートメーション(COM)は Windows 上では共通の仕様であるため、他の Windows アプリが COM サーバー仕様に従って情報を公開していれば、COM クライアントである AutoCAD VBA プログラムからそのアプリをコントロールすることができます。
そして、Microsoft EXCEL は、自身の機能を COM サーバー として公開しているので、EXCEL 内部の VBA から自身の機能をプログラムでコントロールすることができます。同様に、AutoCAD VBA からも EXCEL をプログラムでコントロール出来る理屈です。

COM サーバーが持つ情報を公開しているのが、タイプ ライブラリ と呼ばれるファイルです。COM クライアントからタイプ ライブラリを参照することで、COM サーバーを参照する手続きが完了します。AutoCAD VBA 内の VBA プロジェクトは、すぐに AutoCAD のオブジェクトを扱えるように、AutoCAD のタイプ ライブラリが最初から参照された状態で作成されます。
同じように、EXCEL の VBA のプロジェクトは、EXCEL のタイプ ライブラリが自動的に参照設定されています。ただし、上図のように、異なるソフトウェアの COM サーバーを参照する場合は、明示的に相手のタイプ ライブラリを参照設定する必要があります。参照設定は、VBA エディタの [ツール] メニューから [参照設定] メニューを選択しておこないます。
つまり、ActiveX オートメーションを使えば、AutoCAD VBA から AutoCAD 図面の情報を拾い出して EXCEL を起動、拾い出したデータをシート上の書き出し、テーブル書式設定したり、グラフ化したり出来ます。同じように、EXCEL VBA からシート上の数値を読み取って AutoCAD を起動、数値を反映したジオメトリを作図するようなことが可能です。

ActiveX オートメーションは Windows 上でしか利用出来ませんが、コントロールしたいアプリが ActiveX オートメーションに対応していれば(ここでは COM サーバー機能を持つという意味)、COM サーバーと COM クライアントの仕組みで相互にコントロール出来ることがわかります。
注意が必要なのは、コントロールしたいアプリの公開内容(オブジェクト、メソッド、プロパティ)は、そのアプリのドキュメントを参照する必要がある、という点です。AutoCAD VBA から EXCEL をコントロールする際には、Excel Visual Basic for Applications (VBA) リファレンス などの参照が必須です。また、AutoCAD と同じように、EXCEL のバージョンによってタイプ ライブラリ名や公開情報が変わる可能性がある点にも気をくばる必要があります。
By Toshiaki Isezaki

You must be logged in to post a comment.