エクセルの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プロジェクトオブジェクトモデルへのアクセスを信頼する、にチェックを入れるべし。