VBAのモジュールをインポート

VBAのモジュールを個別もしくは一括でインポートする。

エクスポートされたモジュール(標準モジュール・クラス・ユーザフォーム・ExcelObjects)をVBAでインポートするにはVBComponentsコレクションのImportメソッドを利用することでできます。

ExcelObjectsをエクスポートしたコード(シートオブジェクトやThisWorkbookに記載したコード)は扱い的にはclsファイルとなるため、インポートした時はクラスモジュールに分類されてインポートされます。
フォームはモジュールのファイルとfrxファイルの2つで1つの扱いになりますが、インポートの時はモジュールのファイルの方だけを引数に指定すればインポートが可能です。

サンプルコードでは、指定のモジュールだけをインポートする方法と、指定のブック内にあるすべてのモジュールをエクスポートする方法を記載しています。

※実行時に「プログラミングによる Visual Basic プロジェクトへのアクセスは信頼性に欠けます」または「’VBE’メソッドは失敗しました’_application’オブジェクト」のエラーメッセージが表示された場合

動作確認
Windows10/Excel2016:○
Windows11/Excel2024:○

 ●指定したモジュールのインポート

'******************************************************************************
' モジュールの個別インポート
'******************************************************************************
Sub moduleImport_Single()
    
    'インポート対象のモジュールファイルを指定
    Dim sImporFile As String
    sImporFile = "C:\VBA\module\モジュール_インポート.bas"

    '指定のモジュールをインポート
    ThisWorkbook.VBProject.VBComponents.Import sImporFile
                                        
End Sub

 ■実行前

 ■実行結果


 ●モジュールの一括インポート(フォルダ内のモジュールを一括でインポート)

'******************************************************************************
' モジュールファイルの一括インポート
'******************************************************************************
Sub moduleImport_All()

    'インポートしたいファイルのあるフォルダを指定
    Dim sImportPath As String
    sImportPath = "C:\VBA\module\"

    'FileSystemObjectの作成
    Dim oFso  As Object
    Set oFso = CreateObject("Scripting.FileSystemObject")
    
    'フォルダオブジェクトを取得
    Dim oDir As Object
    Set oDir = oFso.GetFolder(sImportPath)
    
    'ファイル名を順次取得
    Dim fFile As Object
    For Each fFile In oDir.Files
        
        'ファイルの拡張子を取得
        Dim sExt As String
        sExt = oFso.GetExtensionName(fFile.Name)
        
        '拡張子からモジュールだけを取得、インポート
        Select Case LCase(sExt)
        Case "bas", "cls", "frm"
            '指定のモジュールをインポート
            ThisWorkbook.VBProject.VBComponents.Import sImportPath & fFile.Name
        End Select
    Next

    MsgBox "完了"

End Sub

 ■実行前

取り込み対象のモジュールファイル

 ■実行結果