ユーザーパラメータの値をExcelに出力するマクロ|CATIAマクロの作成方法

今回はお問い合わせより頂いた内容です。
送って頂いた内容は以下のようなマクロです。

マクロの中で検索項目を指定してPart内で取得したパラメータをEXCELに出力したい
(ユーザーパラメータの値を探し出してEXCELに転機する)

ユーザーが各自で作成したパラメータの値を取得し、Excelに書き出すマクロです。
今回は途中作成のコードも送っていただいたので、その内容を書き直していきます。

 

マクロの機能

今回作成したマクロは『ユーザーパラメータの値をExcelに出力するマクロ』です。

具体的な機能は以下のとおりです。

  マクロの機能まとめ ・「ピン全長」「d1(呼び径)」という名前のユーザーパラメータの値をExcelに書き出す
 (ユーザーパラメータ = ナレッジ・アドバイザーで作成したパラメータ)

今回は頂いたコードから「ピン全長」「d1(呼び径)」という名前のパラメータの値を出力させますが、コード内にある「ピン全長」「d1(呼び径)」の部分を書き換えれば任意のユーザーパラメータの値を書き出すことができます。

 

サンプルコード

マクロのサンプルコードは以下のとおりです。
※下記コードはExcelライブラリを読み込んでいる必要があります。
 未設定の方はCATIAマクロでExcelを操作する方法を参考に設定して下さい。

Option Explicit

Sub CATMain()

    If TypeName(CATIA.ActiveDocument) <> "PartDocument" Then
        MsgBox "CATPart内で実行してください。"
        Exit Sub
    End If
    
    On Error Resume Next
    Dim appExcel As Excel.Application
    Set appExcel = GetObject(, "EXCEL.Application")
    If Err.Number <> 0 Then
        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)
    
    
    Dim doc As PartDocument
    Set doc = CATIA.ActiveDocument
    
    Dim sel As Selection
    Set sel = doc.Selection
    
    CATIA.RefreshDisplay = False
    
    sel.Clear
    sel.Search ("ナレッジウェア.パラメータ.名前=ピン全長,all")

    ws.Cells(1, 1).Value = "ピン全長"
    ws.Cells(1, 2).Value = "呼び径"

    Dim i As Integer
    Dim Parm As Parameter
    
    For i = 1 To sel.Count

        Set Parm = sel.Item(i).Value
        ws.Cells(i + 1, 1).Value = Parm.ValueAsString
        
    Next i
    
    
    sel.Clear
    sel.Search ("ナレッジウェア.パラメータ.名前=d1(呼び径),all")

    For i = 1 To sel.Count
    
        Set Parm = sel.Item(i).Value
        ws.Cells(i + 1, 2).Value = Parm.ValueAsString
        
    Next i
    
    wb.Activate
    
    CATIA.RefreshDisplay = True
    
End Sub

 

コード解説

ここでは上記マクロコードのいくつかの部分を抜粋して解説していきます。

ドキュメントの定義

    If TypeName(CATIA.ActiveDocument) <> "PartDocument" Then
        MsgBox "CATPart内で実行してください。"
        Exit Sub
    End If

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

 

Excel設定

    On Error Resume Next
    Dim appExcel As Excel.Application
    Set appExcel = GetObject(, "EXCEL.Application")
    If Err.Number <> 0 Then
        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の設定を行います。
詳しくはCATIAマクロでExcelを操作する方法を参照下さい。

 

Excelにパラメータの値を書き出す

    sel.Clear
    sel.Search ("ナレッジウェア.パラメータ.名前=ピン全長,all")

    ws.Cells(1, 1).Value = "呼び径"
    ws.Cells(1, 2).Value = "ピン全長"

    Dim i As Integer
    Dim Parm As Parameter
    
    For i = 1 To sel.Count

        Set Parm = sel.Item(i).Value
        ws.Cells(i + 1, 1).Value = Parm.ValueAsString
        
    Next i

まずはSearchメソッドを使い「ピン全長」という名前のパラメータを全て選択状態にします。
あとはFor文を使って選択状態のパラメータの値を書き出していきます。

選択状態のパラメータは「パラメータ自体」を表しているので、「値」を取得するには「Parameterオブジェクト」の「ValueAsStringメソッド」を使って以下のように書きます。

 icon-code パラメータの値を取得

Dim Parm As Parameter
Set Parm = sel.Item(i).Value         'パラメータを取得
 
Dim ParmValue As String
ParmValue = Parm.ValueAsString 'パラメータの値を取得

上記コードでは「ws.Cells(i + 1, 1).Value = Parm.ValueAsString」と、直接Excelのセルに書き出すようにしています。

これを「d1(呼び径)」でも同じ処理をすればExcelに全てのユーザーパラメータの値を書き出すことができます。

 

まとめ

今回は『ユーザーパラメータの値をExcelに出力するマクロ』についての内容でした。

いろいろコードを書いてきましたが、今回重要な部分は「パラメータの値を取得する」という部分です。(Excelでの操作はExcel VBAさえ理解できていれば非常に簡単なものです)

パラメータの値を取得するには「Parameterオブジェクト」の「ValueAsStringメソッド」を使います。引数なども特になく、「.ValueAsString」と書くだけなので「.Value」と同じ感覚で使うことができます。

 

目次へ戻る
 

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

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