====== 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プロジェクトオブジェクトモデルへのアクセスを信頼する、にチェックを入れるべし。 {{ :blog:2017:excel_security_center.png?600 |}} ===== 参考サイト ===== * [[http://www.vbaexpress.com/kb/getarticle.php?kb_id=278|VBA Express : Excel - Determine the File Path or GUID to a VBA Reference Library]] * [[https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1212970637|Excel VBA で、自分の関数名を取得したいのですが、良い方法ありますか?例... - Yahoo!知恵袋]] * [[https://support.microsoft.com/ja-jp/help/410621|[XL97] モジュール、プロシージャの情報取得および操作方法]] * [[https://stackoverflow.com/questions/36791473/vba-getting-the-modules-in-workbook|excel vba - VBA - Getting the modules in workbook - Stack Overflow]] * [[http://saku-saku-pc.com/excel/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AB%E3%82%88%E3%82%8B%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9/|実行エラー「プログラミングによる Visual Basic プロジェクトへのアクセスは信頼性に欠けます」の対策 | サクサクPC]]