CATDrawingのテーブルをcsvファイルとして出力するマクロ|CATIAマクロの作成方法

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

ワークベンチ:ドラフティング

マクロ案:CATDrawingのテーブルをcsvファイルとして出力するマクロ

今回のマクロではファイルの新規作成というCATIAアプリケーション外での処理も行います
ファイルの操作はCATIA VBAの「FileSystemオブジェクト」で行います。
全く知らないという方は上記リンクページに軽く目を通しておくと本内容が理解しやすくなります。

 

マクロの機能

今回作成したのは選択したテーブルをcsvファイルとして出力するマクロです。
具体的な機能は以下のとおりです。

  マクロの機能まとめ ・選択したテーブルをcsvファイルとして出力する
・テーブル内で改行されている文字列は、改行部分を半角スペースに置き換えて出力する
・出力後にcsvファイルを開く

 

VBAコード

コード全体は下記の通りです。
コピペで実行可能ですが「出力ファイル名作成」部分のパスは、自身の環境に合わせて書き換える必要があるので注意して下さい。

 

コード解説

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

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

アクティブドキュメントが定義できたらSelectionオブジェクトも合わせて定義します。以降で「SelectElement2メソッド」を使うためVariant型で定義しておく必要があるので注意しましょう。

また、今回は最終的にcsvファイルとして出力するため「FileSystemオブジェクト」も定義しておきます。このオブジェクトはcsvファイルやtxtファイル等の新規ファイルやフォルダをVBAで作成する際に使用するオブジェクトです。

 
テーブルをユーザー選択で取得

次にcsvファイルとして出力するテーブルを取得します。
ここではSelectionオブジェクトSelectElement2メソッドを使ってテーブルを取得します。

 
出力ファイル名作成

次にcsvファイルのフルパスを作成します。
上記コードの「fold_path」に保存ディレクトリのパス、「file_name」にファイル名を入力します。最終的にこれら2つの文字列を使ってcsvファイルのフルパス「file_path 」を作成しています。

この部分は自身の環境に合わせて書き換える必要があるので注意して下さい。

 
出力ファイルの作成&編集用にファイルを開く

つぎに空のcsvファイルを作成します。
ファイルの作成は「FileSystemオブジェクト」の「CreateFileメソッド」を使用します。

以降でこの空のcsvファイルにテキストを書き込んでいくために、このファイルの「TextStreamオブジェクト」を取得します。TextStreamオブジェクトは「Fileオブジェクト」の「OpenAsTextStreamメソッド」を使います。

あとは、このTextStreamオブジェクトの「Writeメソッド」を使うことで、ファイルに任意の文字列を書き込むことができます。

 
出力するcsv文字列を作成

次に空のcsvファイルに書き込むための文字列を作成します。
ここではテーブルの行/列ループで各セルに書かれている値を順に取り出して「txt」の中に追加していきます。このとき間にカンマ[,]を挟むことで、csvファイルとしての文字列を作成することができます。(ここではテーブルの最大行「NumberOfRows」と最大列「NumberOfColumns」を使ってループさせています)

またテーブルが次の行に行く場合は改行コード「vbLf」を追加したり、テーブルのセル内に改行コードがある場合はReplaceで半角スペースにしたりなどの分岐処理もしています。
 
この処理により「txt」に出力するcsvファイルの値がすべてまとまった状態になります。

  
作成した文字列をファイルに入力

最後に前項で作成した文字列を空のcsvファイルに書き込みます。
書き込みはTextStreamオブジェクトの「Writeメソッド」を使い、引数に書き込みたい文字列を入力するだけです。書き込みが完了したら「Closeメソッド」でTextStreamオブジェクトを終了します。

これでcsvファイルとして出力することができました。
サンプルコードでは最後にShell関数を使って作成したcsvファイルを開くようにしています。

 

まとめ

今回はCATDrawingのテーブルをcsvファイルとして出力するマクロについての内容でした。

今回のマクロで重要なのは「FileSystemオブジェクト」でファイルを新規作成することと、DrawingTableの行/列ループをするという部分です。

行/列ループはExcel VBAでは非常によく使われる方法なので知っている方も多いと思いますが、初めて知った方はこれを機に覚えておくといつか役に立つと思います。
 

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

 

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

CATIA, CATIAマクロ, VBA

Posted by Lic