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

今回はExcelマクロでCATIAを操作する方法を解説していきます。
CATIAとExcelを連携することで仕事内容によっては非常に効率を上げることができます。

今回学ぶことのできる内容は以下のとおりです。

icon-check-square ExcelマクロでCATIAを操作する方法

また、本ページの内容とは逆パターンの、CATIAマクロでExcelを操作する方法も紹介しているので合わせて参照ください。

ExcelマクロからでもCATIAマクロからでも“どちらのアプリケーションから実行するか”くらいの違いしかなく、やることは自体は変わりません。

ただ、大きい違いとしてExcelマクロの場合はExcelのファイル(ブック)ごとにマクロファイルが別々となりますが、CATIAマクロの場合はcatvbaという1つのファイルにまとまっているという点があります。こういった内容も踏まえて、自身の使い勝手の良い方法を使用してください。

 

CATIAマクロの事前準備

まずExcelマクロでCATIAを操作するには以下の2つの準備をする必要があります。

① Excelマクロ内にCATIAマクロのライブラリを読み込む
② ExcelマクロのコードにCATIAを呼び出すための構文を書く

 

Excelマクロ内にCATIAマクロのライブラリを読み込む

大前提として基本的にはExcelマクロはExcelの操作しかできません。これはCATIAマクロもAccessマクロも同じでそれぞれのアプリケーションしか操作できないようになっています。

マクロはVBAのオブジェクトを操作することで、それに対応するアプリケーションのオブジェクトを操作するような仕組みになっています。

たとえばExcelの場合はVBAの「Sheet」というオブジェクトを操作してシートの名前を変更することが出来ますし、CATIAの場合でいえばVBAの「Document」というオブジェクトを操作することでドキュメントを保存したり、閉じたりすることができます。

このように各マクロはそれぞれのアプリケーション内の操作する対象物を「オブジェクト」として用意しています。そして、これらのオブジェクトは『ライブラリ』というものにまとめられています。ExcelマクロはExcelのオブジェクトがまとめられたライブラリが、CATIAマクロはCATIAのオブジェクトがまとめられたライブラリがそれぞれ設定されています。

というわけで、ExcelマクロでCATIAを操作するにはCATIAのオブジェクトを読み取ることができるようExcelマクロに対して『CATIAのライブラリ』を設定する必要があります。これを行わないとExcelのVBE上でCATIAのオブジェクトを書いても、Excelマクロがそれを理解することができないためオブジェクトとして認識されず操作することが出来ません。

 icon-edit ライブラリとは 

『ライブラリ』とは簡単にいうとVBAのオブジェクトがまとめられた本のようなものです。

VBAはExcel、CATIA、PowerPoint、Accessなど様々なアプリケーションに用意されています。

 
そして、それらのアプリケーションにはそれぞれ特有の”固有オブジェクト”があります。
(たとえばExcelでいえば「セル」、パワーポイントでいえば「スライド」、CATIAでいえば「サーフェス」のようにそのアプリケーションでしか使わないオブジェクトのこと)

 
これら全ての固有オブジェクトを1つのライブラリにまとめてしまっては、あまりにも量が膨大すぎて非常に扱いづらいものとなってしまいます。
そのためライブラリは各アプリケーションや各機能ごとに分けて用意されています
 
このライブラリをアプリケーション(Excel)に読み込ませることで、別のアプリケーション(CATIA)を操作するマクロを作成することができるようになります。

要はCATIAマクロで使用しているライブラリを、Excelにも読み込ませればいいということですね!

 

ライブラリの設定

ライブラリの設定はVBEの「参照設定」より確認することができます。
まずはCATIAマクロに対してどのようなライブラリが設定されているかを確認します。

CATIAのVBEのメニューバーから[Tools]>[References…]をクリックすると以下のようなウィンドウが立ち上がります。このウィンドウ内でチェックのついているものが現在CATIAに設定されているライブラリです。

通常ライブラリは1つのアプリケーションに対して1つだったりするのですが、CATIAは見てもらえば分かるとおりで大量のライブラリが用意されています。CATIAはライセンスの関係上、人によって使用できる機能が違うため、機能やワークベンチ別にライブラリが小分けにされています。そのためこのように多くのライブラリが用意されているという訳です。

CATIAに設定されているライブラリが確認できたところで、次にExcelマクロに対してこれらのライブラリを設定していきます。

ExcelのVBEのメニューバーから[ツール]>[参照設定…]をクリックすると以下のようなCATIAの時と同じようなウィンドウが立ち上がります。

このウィンドウ内で先ほど確認したCATIAライブラリすべてにチェックを付けて適用させます。
本来であれば先ほど確認したものを1つずつチェックしていくのがベストですが、量が多く面倒なので「CATIA V5~」で始まるものすべてにチェックを付けるという考えでも問題ありません
矢印キーで上下移動、スペースキーでチェックが付けられるので利用してみてください。

チェックを付け終わったらウィンドウ右側の[OK]を押せば完了です。
これでExcelマクロがCATIAのオブジェクトを理解することができるようになりました。

 

ExcelマクロのコードにCATIAを呼び出すための構文を書く

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

icon-code Excelを呼び出す 

Sub main()

    Dim CATIA 
    Set CATIA = CreateObject(“CATIA.Application”) 

     
  ‘実行したいCATIAの処理

 

End Sub

上記のようにCreateObject関数を使うことで「CATIA」という変数にCATIAをApplicationオブジェクトとして取得することができます。簡単にいえば上記コードを書いた以降ではCATIAのVBEで書いているコードをそのままコピペしても使用することが可能になります。

たとえば以下のコードを書くとCATIAのアクティブドキュメントの名称をExeclのシート1のA1セルに書き出すことができます。

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

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

 

サンプルマクロ「Excel記載の座標を取得し点作成」

ここではサンプルとして「Excelの表から座標を取得し点を作成するマクロ」を紹介します。
上画像のようにExcelのシート上に点の名前と座標を入力した状態で実行することで、シート2行目以降に書かれている全ての点を一括で作成することのできるマクロです。

コードは以下のとおりです。

このサンプルマクロはExcelの表から座標を取得し点を作成するマクロで紹介しているサンプルコードをExcelマクロバージョンに書き換えたものです。

コードを比較してみるとわかりますが、それぞれアプリケーションである「Excel」と「CATIA」の定義方法が違うだけでその他は全く同じコードになっています。

どこをどう書き換えるのかが理解できれば、その他のアプリケーションと連携する場合も同じ方法なのですぐに対応できるはずです。

 

まとめ

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

icon-check-square ExcelマクロでCATIAを操作するには以下の2つを行う必要がある

   ① Excelマクロ内にCATIAマクロのライブラリを読み込む
   ② ExcelマクロのコードにCATIAを呼び出すための構文を書く
icon-check-square
ExcelマクロでもCATIAを操作する書き方はCATIAマクロと同じ

ExcelマクロでCATIAを実行する際の最難関ポイントはライブラリ登録が面倒という点です。
しかしながらExcelマクロのほうが多くの人と共有しやすいので、そういった点ではCATIAマクロで作るよりも便利だったりすることもあります。

複数人で使う場合はExcelマクロ、個人的に使う場合はCATIAマクロという様に使い分けるのも良いと思ます。ただ結局のところ一番大事なのは”ユーザーが使いやすいかどうか”その一点につきます

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

目次へ戻る
 

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

今回やった情報の少ない「CATIAとExcel」もしっかりと載っています。他にも「CATIAとPowerPoint」「CATIAとWord」の内容も記載されているので興味のある方にはオススメです。

2022年7月28日CATIA, CATIAマクロ

Posted by Lic