CATIAマクロでExcelを操作する方法|CATIAマクロの作成方法
今回はCATIAマクロでExcelを操作する方法を解説していきます。
Excelと連携することで仕事内容によっては非常に効率を上げることができます。
かなり情報も少なく、難しく感じる内容ですがここで理解しておくと今後の役に立つと思います。
今回学ぶことのできる内容は以下のとおりです。
CATIAマクロでExcelを操作する方法
また、PowerPointを操作する方法は下記ページで解説しているため合わせて参照ください。
CATIAマクロの事前準備
まずCATIAマクロでExcelを操作するには以下の2つの準備をする必要があります。
① CATIAマクロ内にExcelマクロのライブラリを読み込む
② CATIAマクロのコードにExcelを呼び出すための構文を書く
CATIAマクロ内にExcelマクロのライブラリを読み込む
CATIAマクロでExcelを操作するには大前提として「参照設定」というものでExcelマクロの固有オブジェクトを読み取ることができるように『ライブラリ』を設定する必要があります。
デフォルトの場合、CATIAマクロではCATIA専用の固有オブジェクト(PartDocument,HybridBodyなど)のみを、ExcelマクロではExcel専用の固有オブジェクト(WorkSheets,Cellsなど)のみしか読み込むことができません。
そのためCATIAのVBE上でExcelの固有オブジェクトを書いても、CATIAマクロがそれを理解することができないためオブジェクトとして認識されません。
『ライブラリ』とは簡単にいうとVBAのオブジェクトがまとめられた本のようなものです。
VBAはExcelやCATIAだけでなくPowerPointやAccessなど様々なソフトで使うことができます。
そして、それらのソフトにはそれぞれ特有の”固有オブジェクト”があります。
(たとえばExcelでいえば「セル」、パワーポイントでいえば「スライド」、CATIAでいえば「サーフェス」のようにそのソフトでしか使わないオブジェクトのこと)
これら全ての固有オブジェクトを1つのライブラリにまとめてしまっては、あまりにも量が膨大すぎて非常に扱いづらいものとなってしまいます。
そのためライブラリは各ソフトや各機能ごとに分けて用意されています。
このライブラリをソフト(CATIA)に読み込ませることで、別のソフト(Excel)を操作するマクロを作成することができるようになります。
ライブラリの設定
次にExcelではどのようなライブラリが読み込まれているのかを確認します。
ExcelのVBEのメニューバーから[ツール]>[参照設定…]をクリックすると以下のようなウィンドウが立ち上がります。
名前から想像がつくと思いますがExcelのコードは「Microsoft Excel ○○.○ Object Library」に書かれています。(○○.○の部分はExcelのバージョンによって違います)
つまりこの「Microsoft Excel ○○.○ Object Library」をCATIAにも読み込ませれば「WorkSheets」や「Cells」などのExcelの固有オブジェクトを使うことができ、操作も可能になるということです。
ではCATIAに「Microsoft Excel ○○.○ Object Library」を読み込んでいきましょう。
CATIAのVBEのメニューバーから[Tools]>[References…]をクリックすると以下のようなウィンドウが立ち上がります。
このリストの中から「Microsoft Excel ○○.○ Object Library」にチェックを付ければライブラリの設定は完了です。
CATIAマクロのコードにExcelを呼び出すための構文を書く
ライブラリの設定ができたら後は以下のコードを書くだけです。
コードを書かないとライブラリを読み込んでいいても、Excelは使えないので注意してください。
Sub CATMain()
Set WB = appExcel.Workbooks.Add
‘実行したい処理
End Sub
このコードに関してはあまり深く考えずに「Excelを使うときにはこのコードを書く」と丸暗記しておけば大丈夫です。(詳しく知りたい方は「GetObject」や「CreateObject」で検索してみて下さい)
これによりCATIAのVBE上でExcelの固有オブジェクトを使うことができるようになりました。
たとえば以下のコードを書くとExeclのA1に「Macro」と書き出すことができます。
WB.Sheets(1).Cells(1, 1).Value = “Macro”
サンプルマクロ「点座標をExcelに書き出すマクロ」
ここではサンプルとして「パーツドキュメント内にあるすべての点の座標をExcelに書き出すマクロ」を紹介します。コードは以下のとおりです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
Sub CATMain() On Error Resume Next Dim appExcel As Excel.Application 'Excelが起動している場合 Set appExcel = GetObject(, "EXCEL.Application") If Err.Number <> 0 Then 'Excelが起動していない場合 Err.Clear Set appExcel = CreateObject("Excel.Application") End If On Error GoTo 0 appExcel.Visible = True Dim WB As Workbook Set WB = appExcel.Workbooks.Add Dim WS As Worksheet Set WS = WB.Sheets(1) 'Excelの1つ目にあるシートを定義 Dim DOC As PartDocument Set DOC = CATIA.ActiveDocument Dim SEL As Selection Set SEL = DOC.Selection SEL.Clear SEL.Search ("type=点,all") 'ドキュメント内のすべての点を検索&選択 Dim SELCou As Integer SELCou = SEL.Count Dim myArray(2) '点の座標を格納するための配列を宣言 Dim i As Integer For i = 1 To SELCou Dim SELPoint As AnyObject Set SELPoint = SEL.Item(i).Value SELPoint.GetCoordinates myArray '点の座標を取得し先ほどの配列に代入 Dim XC As Double Dim YC As Double Dim ZC As Double XC = myArray(0) 'XCにX座標を代入 YC = myArray(1) 'YCにY座標を代入 ZC = myArray(2) 'ZCにZ座標を代入 WS.Cells(1, 1).Value = "名前" 'ExcelのA1に「名前」と入力 WS.Cells(1, 2).Value = "X" 'ExcelのB1に「X」と入力 WS.Cells(1, 3).Value = "Y" 'ExcelのC1に「Y」と入力 WS.Cells(1, 4).Value = "Z" 'ExcelのD1に「Z」と入力 WS.Cells(i + 1, 1).Value = SELPoint.Name 'ExcelのA列に点の名前を入力 WS.Cells(i + 1, 2).Value = XC 'ExcelのB列に点のX座標を入力 WS.Cells(i + 1, 3).Value = YC 'ExcelのC列に点のY座標を入力 WS.Cells(i + 1, 4).Value = ZC 'ExcelのD列に点のZ座標を入力 Next i End Sub |
点の取得に「GetCoordinates」というメソッドを使っていますが、それ以外はCATIAの「Selectionオブジェクト」とExcelマクロの「セルへの入力」を使った単純なマクロとなっています。
上記のコードは最低限の内容しか処理できていません。
ここに「罫線を引く」「中央揃えにする」「小数点第2位を四捨五入する」等の処理を追加することで、もう少ししっかりとしたマクロにすることができます。そういった処理はExcelマクロの内容になるのでExcelと連携してマクロを作成するなら以下のような本を1冊持っておくと便利です。
マクロを理解することができるようになってきたら”動くだけ”でなく、デザイン面や利便性も考えていくとより良いマクロになっていくと思います。
まとめ
今回の内容をまとめると以下のとおりです。
CATIAマクロでExcelを操作するには以下の2つを行う必要がある
① CATIAマクロ内にExcelマクロのライブラリを読み込む
② CATIAマクロのコードにExcelを呼び出すための構文を書く
CATIAマクロでもExcelを操作する書き方はExcelマクロと同じ
Excelマクロの書き方は調べればほとんど出てきます。CATIAとつなげることでより効率よく作業を行える場面も多々あると思うので、ぜひ勉強してみて下さい。
会社によってはCATIAマクロの実行をExcelから行うところもあるようで、そういったところはソフトの連携方法を知っていないと意味がありません。(メンテナンスのしやすさや共有すること考えると、実際はそちらの方が多いのかもしれません)
「CATIAマクロ作れるからいいや」で終わらず、Excelとの連携もできるようになっておけばいろいろな会社で通用するスキルが身につきます。これを機にExcelマクロについて勉強してみるのもいいのではないでしょうか。
CATIAマクロを本気で勉強するなら
今回やった情報の少ない「CATIAとExcel」もしっかりと載っています。他にも「CATIAとPowerPoint」「CATIAとWord」の内容も記載されているので興味のある方にはオススメです。