Excelアドインファイルの自分自身のフルパスを取得する

エクセルのVBAプロジェクトで、自身の.xlamファイルのフルパスを取得する方法。まずはコード。

' 自身のファイル名
Const kMyXlamFileName = "MyAddIn.xlam"
 
Private Function GetMyXlamFullPath()
    Dim proj As Object
    For Each proj In Application.VBE.VBProjects
        If InStr(proj.Filename, kMyXlamFileName) <> 0 Then
            GetMyAddInFullPath = proj.Filename
            Exit Function
        End If
    Next
    GetMyAddInFullPath = ""
End Function

ThisProject.Filepathみたいな感じで簡単に取れるかと思いきや、存在するVBProjectを全舐めする方法しか見つからなかった…(´・ω・`)。自身の名前をリテラルでコード内に持ってるのがイケてないが、もしxlamファイル名を変えたらExcelのアドイン設定をし直さなきゃならんので、そう易易と変えることは無いだろうってことで。

「実行時エラー'1004': プログラミングによるVisual Basicプロジェクトへのアクセスは信頼性に欠けます」エラーが出た場合は、Excelのファイル>オプション>セキュリティセンター>セキュリティセンターの設定から、マクロの設定>VBAプロジェクトオブジェクトモデルへのアクセスを信頼する、にチェックを入れるべし。

参考サイト