タイトル異なりますが、こちらの続きです。
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では未テストです。