今まで気が付かなかったのですが・・・。
VBA実行中にプロジェクト名やプロジェクトのファイルパスが欲しいなぁ
と、思った事がありましたがあまり調べていませんでした。
ちょっと試しているうちに発見しました。
'vba 実行中のプロジェクト名とパス取得 Option Explicit Sub CATMain() 'Apc取得 Dim Apc As Object: Set Apc = GetApc() If Apc Is Nothing Then Exit Sub '実行中のVBProject取得 Dim ExecPjt As Object: Set ExecPjt = Apc.ExecutingProject Dim Info$ Info = "現在実行中のマクロのプロジェクト名は" & vbNewLine & _ "[ " & ExecPjt.Name & " ] です。" & vbNewLine & _ "プロジェクトファイルパスは" & vbNewLine & _ "[ " & ExecPjt.DisplayName & " ] です。" 'ReferenceNameかも MsgBox Info End Sub Private Function GetApc() As Object Set GetApc = Nothing 'VBAバージョンチェック Dim COMObjectName$ #If VBA7 Then COMObjectName = "MSAPC.Apc.7.1" #ElseIf VBA6 Then COMObjectName = "MSAPC.Apc.6.2" #Else MsgBox "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 If Apc Is Nothing Then MsgBox "MSAPC.Apcが取得できませんでした" Exit Function End If Set GetApc = Apc End Function
一応VBA6でも対応できそうな雰囲気に書いてますが、
試していない為よくわかりません。
こんな感じです。
Excel等のOffice製品でも取得できるのかどうかもわかりません。
(パスは、ExcelならBookファイルになりそう・・・)
CATIAのバッチモード起動でのマクロ処理は、CATScriptしか出来なさそうなのですが
仕込んだCATScriptから、VBAのProjectを取得し実行できそうな
気がしてます。 バッチモードでもVBAで戦えそう。