ExcelファイルをCATDrawingのテキストボックスに出力するマクロ|CATIAマクロの作成方法

今回のページは「お問い合わせ」から頂いたマクロ作成についての内容です。

Excelのリストを、テーブルではなく、 それぞれドラフティングのテキストボックスに
書き出す方法がありますでしょうか?

例:ExcelのA列に上から5つの文字列が入っている場合、
 それぞれをドラフティングのテキストボックスとして書き出す。( テキストボックスが5つできる。)
 テキストボックスの位置は、 Excelと同じように配置出来たらよい。

上記の通り、以前に公開した「ExcelファイルをCATDrawingのテーブルに出力するマクロ」の出力方法をテーブルではなく、テキストボックスにしたバージョンのマクロを作成していきます。

Excelとの連携方法は下記ページで解説しているので先に一読しておくことをオススメします。

 

マクロの機能

マクロの機能は「Excelファイルのテキストボックスとして出力する」です。
このとき各セルごとに別々のテキストボックスで出力されます。
(上画像の場合は25個のテキストボックスが作成されている)

出力後のテキストボックスはExcelファイルの各セルと同じ位置関係になるように配置されます。

 icon-wrench マクロの機能まとめ ・選択したExcelファイルの表の値をテキストボックスに出力
・出力先はアクティブなビューもしくはシート
・選択したExcelファイルにならってテキストボックスは配置される
・Excelファイルの表の中で空白の部分は空白のテキストボックスが作成される

 

サンプルコード

マクロのコードは下記のとおりです。
マクロ実行後に選択したExcelファイルの値をテキストボックスとして書き出します。
※エラーが出る場合はおそらくExcelライブラリが読み込まれていません
 詳しくは後述のコード解説「Excelの定義」の項を参照ください。

 

コード解説

本マクロのコードを上から順に部分ごとにわけて解説していきます。
前半の内容は以前に公開した「ExcelファイルをCATDrawingのテーブルに出力するマクロ」と全く同じ内容になっています。
 

アクティブドキュメントの定義

まずはじめにアクティブドキュメントの定義をします。
今回のマクロはCATDrawingでのみ有効なものなので、アクティブドキュメントがCATDrawing以外の場合はTypeName関数を使った条件分岐でマクロを終了するようにしています。

条件分岐の先、つまりはアクティブドキュメントがCATDrawingの場合は変数「DrwDOC」にアクティブドキュメントを代入します。
 

Excelの定義

CATIAマクロ上でExcel VBAを使用できるようにExcelを定義します。
上記コードでExcelが定義できない場合は、参照設定がされていない可能性があります
詳しくは下記ページの「Excelマクロのライブラリを読み込む」の項を一読ください。

 
Excelを定義後は「GetOpenFilenameメソッド」を使って、
出力元となるExcelファイル(ブック)をユーザーに選択させ、変数「WB」として代入します。

変数「WB」を定義したら、WBの1つ目のシートを変数「WS」に代入します。
このWSに書かれている値がテキストボックスとして出力されます。
 

Excelファイルの最大行数/列数を取得

出力元となるExcelの表のサイズ、つまりは値が入力されている最大行数/列数を取得します。

これは「Findメソッド」を使うことで簡単に取得することができます。
「Findメソッド」を使った入力範囲の取得はExcelマクロでよく使われ、多くの情報が存在するのでここでは割愛します。(詳しくは「Excelマクロ Findメソッド」等で検索してみて下さい)

取得した値はそれぞれ、最大行数は「MaxRow」、最大列数は「MaxCol」に代入します。
 

テキストボックス作成の準備

出力先となるアクティブなシート/ビューを定義します。

合わせて出力位置の「基準となる座標」を指定します。
基準となる座標とは、下の画像のように出力するすべてのテキストボックスを1つのかたまりとして見たときの左上の位置のことを指します。

この位置を基準にすべてのテキストボックスが配置されていくので任意で値を変更して下さい。
 

テキストボックスの作成

Excelの各セルから値を読み取り、テキストボックスとして出力していきます。

テキストボックスは取得したMaxRow×MaxCol回のループで、1つずつ作成していきます。
テキストボックスの作成は「DrawaingTextsコレクション」の「Addメソッド」を使います。

icon-code Addメソッド

DrawingTexts.Add テキストボックスに入力する値,X座標位置,Y座標位置

 
テキストボックスの作成位置は先ほど指定した「基準となる座標」を使って以下のようにしています。

X座標: OriginX + ((j – 1) * 15)
Y座標: OriginY + ((i – 1) * -7)

赤色部の数値を変更することでテキストボックス同士の幅を変更することができます。
こちらも基本となる座標と同様に任意で数値を書き換えて下さい。

 

まとめ

今回はExcelで作成した表をテキストボックスとして出力するマクロについての内容でした。

基本的にはテーブルに書き出すときと同じような処理をしています。
ただテーブルと違い、今回はテキストボックスを配置する位置を指定する必要があります。

上記のコードでは定数で位置を指定しているため、Excelファイルの方でセルの幅や高さを変えても書き出し時に反映されません。

Excelのセル幅、セル高さを取得して今回のマクロに取り込めば、よりExcelファイルに近い形でテキストボックスを出力することできるのでぜひ挑戦してみて下さい。

 
目次へ戻る
 

icon-book CATIAマクロを本気で勉強するなら

2024年8月26日CATIA, CATIAマクロ

Posted by Lic