ファイルに保存されたマクロを動的にロードする方法(Excel VBA)
以下のコードでファイルに保存されたマクロを動的にロード出来ます。 ちょっとめんどくさいのは、デフォルト設定のExcelでは「プログラミングによる Visual Basic プロジェクトへのアクセスは信頼性に欠けます」の実行時エラーになってしまい、実行できません。 なので、「マクロの設定」の「VBA プロジェクトオブジェクトモデルへのアクセスを信頼する」をチェックしないといけません。
ThisWorkbookシート
Option Explicit ' --------------------------------------------- ' ファイルに保存されたマクロを動的にロードする。 ' --------------------------------------------- Private Sub Workbook_Open() Call ClearModules Call ImportModule(ThisWorkbook.Path & "\ModMain.bas") End Sub Private Sub Workbook_Close() Call ClearModules End Sub Private Sub ImportModule(ByVal strFilePath As String) Dim objFS As Object Set objFS = CreateObject("Scripting.FileSystemObject") If objFS.FileExists(strFilePath) Then ThisWorkbook.VBProject.VBComponents.Import strFilePath Else Call MsgBox("モジュールが存在しません。" & vbCrLf & strFilePath) End If Set objFS = Nothing End Sub Private Sub ClearModules() Dim varComponent As Variant For Each varComponent In ThisWorkbook.VBProject.VBComponents If varComponent.Type = 1 Then ThisWorkbook.VBProject.VBComponents.Remove varComponent End If Next End Sub ' 【Excel】実行エラー「プログラミングによる Visual Basic プロジェクトへのアクセスは信頼性に欠けます」の対策 ' http://saku-saku-pc.com/excel/プログラミングによるアクセス/