C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

VBAエディタの取得

タイトル異なりますが、こちらの続きです。
CATVBAの標準モジュールをマクロで削除したい (希望)2 - C#ATIA
もう、7年も前の話だ・・・。


ちょっと先々の事を考えて、VBAのエディターを操作したくなる
気がしたので、復習がてらExcelでも利用出来るようにと考えており、
好みの部分を含めて、こんな感じに修正しました。

'vba
'現在開かれているVBプロジェクト数を表示
'事前に参照設定する必要ありません
'実行環境がexcelで無い場合は、catiaと判断

Option Explicit

Sub get_vbe_sample()

    Dim vbe As Object
    Set vbe = get_vbe
    If vbe Is Nothing Then
        MsgBox "VBAエディターが取得できませんでした"
        Exit Sub
    End If

    MsgBox "現在開かれているプロジェクト数は" & vbe.VBProjects.Count & "個です"
    
End Sub


'アプリケーション別でVBEditor取得
Private Function get_vbe() As Object

    Dim vbe As Object

    On Error Resume Next
        Dim app As Application
        Set app = Application
        If app.Name = "Microsoft Excel" Then
            'excel
            Set vbe = app.vbe
        Else
            'catia
            Set vbe = get_vbe_by_catia()
        End If
    On Error GoTo 0

    Set get_vbe = vbe

End Function


'CATIAでVBEditor取得
Private Function get_vbe_by_catia() As Object

    Set get_vbe = Nothing
    
    'VBAのバージョンチェック
    Dim comObjectName As String
    #If VBA6 Then
        comObjectName = "MSAPC.Apc.6.2"
    #ElseIf VBA7 Then
        comObjectName = "MSAPC.Apc.7.1"
    #Else
        'VBAのバージョンが未対応
        Exit Function
    #End If
    
    'APC取得
    Dim apc As Object
    Set apc = Nothing
    On Error Resume Next
        Set apc = CreateObject(comObjectName)
    On Error GoTo 0
    
    'VBE取得
    If apc Is Nothing Then
        Exit Function
    End If
    
    Set get_vbe = apc.vbe

End Function

実行結果はこちら。

えぇ、Excelで試しました。 ので、CATIAでは未テストです。

Excelの場合は、VBAエディタが簡単に取得出来るんですね。