差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

blog:2017:2017-12-21 [2017-12-21 18:55] (現在)
Decomo 作成
行 1: 行 1:
 +====== Excelアドインファイルの自分自身のフルパスを取得する ======
  
 +エクセルのVBAプロジェクトで、自身の.xlamファイルのフルパスを取得する方法。まずはコード。
 +
 +<code vb>
 +' 自身のファイル名
 +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
 +</code>
 +
 +''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]]
  • blog/2017/2017-12-21.txt
  • 最終更新: 2017-12-21 18:55
  • by Decomo