Excelシートに記載されているCATIAデータを開くマクロ|CATIAマクロの作成方法

今回の記事はマクロ案募集よりいただいた内容です。
送って頂いた内容は以下のようなマクロです。

ワークベンチ: 
 アセンブリーデザイン

マクロ案: 
 エクセルの部品表から選んだ部品が開くマクロを作ることはできますでしょうか。
  
 EXCELのネジ一覧表、シート毎にネジの種類が分けられた表を用意します。シートには、同じ種類で径と長さが異なるネジが一覧表示されています。一覧表に「部品を開く」というボタンを設けます。表示したいネジが書かれたセルをクリックし、そのボタンを押すと選んだネジが画面上に表示できないでしょうか
 
部品は、CATPartだけではなく、座金組込みねじなどにもにも対応したいのでCATProductも開けるようにしたい考えです。ネジのCATIAデータは、EXCELファイルと同じフォルダ内に格納します。

具体的に言いますと、シート「六角穴付きネジ」のとあるセルに「SCREW-M2-L5_CB」と書かれていたとします。このセルをクリックし「部品を開く」ボタンを押すと六角穴付きネジM2長さ5mmのネジ、「SCREW-M2-L5_CB.catpart」が読み取り専用ファイルで開けるようにしたい。
なお、CATIAは起動済みという前提で考えています。

本サイトではCATIA VBAでExcelを操作する方法は紹介していますが、Excel VBAからCATIAを操作する方法もほとんど同じで、参照設定でCATIA関連のライブラリを読み込めば実行が可能になります。

今回はそういった点も含めてExcel VBAでCATIAを操作し、Excelに記載されているデータを開くマクロについて紹介していきます。

 

マクロの機能

今回作成したのはExcelに記載されている文字列と同じ名称のデータを開くマクロです。
Excelシート上で「部品を開く」ボタンを押すと、選択されているセルに書かれているデータが開かれます。具体的な機能は以下のとおりです。

  マクロの機能まとめ ・Excelシートに書かれている文字列と同じ名称のCATIAデータを開く
・「部品を開く」ボタンを押したときに選択されているセルに書かれているデータを開く
・CATIAデータは読み取り専用で開く
・選択されているセルがA列かつ値が入力されている場合に限りマクロの実行が可能
・データを開いたらCATIAウィンドウを最前面にする
・Excelファイルと同じフォルダ内にCATIAデータが存在している必要あり
・CATIAが開かれていない状態でボタンを押しても実行しない(メッセージの表示)

今回のマクロはCATIA VBAではなくExcel VBAを使うため、まずは事前準備が必要です。
 

 事前準備 (CATIAライブラリ読み込み)

まずは空のExcelファイル(ブック)を作成し、名前を付けて保存します。
このとき拡張子は[.xlsm]のExcelマクロ有効ファイルとして保存します。

次にExcel VBEの[ツール]タブ > [参照設定]よりCATIAライブラリを読み込みます
読み込むべきはCATIA VBEで[ツール]タブ > [参照設定]に読み込まれている(チェックのついている)すべてのライブラリです。CATIAのライセンスによってはかなりの量ありますが、Excel側の参照設定で「CATIA V5 ○○○○」と書かれている全てのライブラリにチェックを付けておけばOKです。

 

サンプルコード

マクロのコードは以下のとおりです。 
Excelの[開発]タブからVBEを起動し下記コードを入力します。コードの入力が完了したらシート上にボタンを作成し、入力したコード「Sub Push_Button()」を登録すれば準備は完了です。(Excelマクロのボタンや登録については検索すればたくさん出てくるのでわからない方はそれらを参照下さい。

セルを選択した状態でボタンを押せば該当のCATIAデータが開かれます。

 

コード解説

CATIAで開くBOLT名称を取得

まずはセルに書かれているBOLT名称を取得します。
今回は選択セルが「1つ」「A列」「値が入力されている」場合にのみ有効となるよう条件分岐をしています。ここは自身にあったエリアが有効になるよう書き換えて下さい。

セルの値を取得したら文字列の一番最後にピリオド[.]を追加します。
これは「ファイル名.拡張子」の拡張子前についているピリオドを表しています。
後々わかりますがここは「.CAT」という文字列を追加しても問題ありません。これは「.CATProduct」「.CATPart」などCATIAファイルの拡張子が「.CAT」で始まるためです。
  

CATIAファイルのパス作成

つぎにExcelファイルの保存されているフォルダ内にあるCATIAファイルの名称を取得します。
Excelファイルと同フォルダ内の全てのファイルに対してループを行い、先ほど取得したBOLT名称(ピリオド付き)が含まれているファイルを探し出します。

開くCATIAファイルがCTAPartのみ、CATProductのみと決まっていればここの処理は必要ありませんが、今回のマクロではどちらかが確定されていないためこのような処理が挟まっています。

CATIAファイルの名称が取得できたらフォルダパスと組み合わせてフルパスを作成します。
 

CATIA処理

最後にCATIAをオブジェクトとして取得し、先ほど作成したパスを開きます。
CATIAを取得したら、以降の書き方はCATIA VBAと同じです。

※事前準備のところでやった参照設定がされていないとエラーが発生するので注意して下さい。

既存ファイルを読み取り専用で開くには「Documentsオブジェクト」の「NewFormメソッド」を使って下記のように書きます。

 icon-code 既存のドキュメントを開く(読み取り専用) 

Call CATIA.Documents.NewForm(“パス”)

ファイルを開いたらAppActivateを使ってCATIAを最前面に表示するようにしています。

 

まとめ

今回はExcelシートに記載されているCATIAデータを開くマクロについての内容でした。

本マクロで一番重要なのはExcel VBAでCATIAを操作するためにCATIAライブラリを読み込ませる部分です。CATIA VBAでExcelライブラリを読み込むときは「Microsoft Excel ○○.○ Object Library」の1つだけでよかったですが、CATIAの場合はライセンスの兼ね合いもありかなり多くのライブラリを読み込む必要があります。

しっかりと読み込むのであればCATIA VBAに読み込まれているライブラリを全てメモしておきExcel VBAに読み込ませるのですが、数が数なので最悪「CATIA V5〜」と始まっているライブラリを全て読み込めば実行自体は可能になるはずです。
 

サンプルマクロ集に戻る
目次へ戻る

 

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

CATIA, CATIAマクロ, VBA

Posted by Lic