モジュールのインポート/エクスポート

フォルダを指定して全てのモジュールをインポートする

Sub ImportModulesFromFolder()
    Dim folderPath As String
    Dim fileName As String
    Dim vbComp As Object
    Dim vbProj As Object
    Dim fileExt As String
    
    ' インポートするフォルダのパスを指定します
    folderPath = "C:\YourFolderPath\" ' 適切なフォルダパスに変更してください
    
    ' VBAプロジェクトへの参照を取得します
    Set vbProj = ThisWorkbook.VBProject
    
    ' フォルダ内のすべてのファイルに対して処理を実行します
    fileName = Dir(folderPath & "*.*")
    Do While fileName <> ""
        ' ファイルの拡張子を取得します
        fileExt = LCase(Right(fileName, Len(fileName) - InStrRev(fileName, ".")))
        
        ' VBAモジュール以外のファイルはスキップします
        If fileExt = "bas" Or fileExt = "cls" Or fileExt = "frm" Then
            ' モジュールをインポートします
            vbProj.VBComponents.Import folderPath & fileName
        End If
        
        ' 次のファイルを取得します
        fileName = Dir
    Loop
    
    MsgBox "モジュールのインポートが完了しました。", vbInformation
End Sub

すべてのモジュールをエクスポートする

Sub ExportModulesToFolder()
    Dim exportFolderPath As String
    Dim newFolderPath As String
    Dim vbProj As Object
    Dim vbComp As Object
    Dim moduleExt As String
    
    ' エクスポート先のフォルダのパスを指定します
    exportFolderPath = "C:\YourExportFolderPath\" ' 適切なフォルダパスに変更してください
    
    ' エクスポート先のフォルダが存在しない場合にのみフォルダを作成します
    If Dir(exportFolderPath, vbDirectory) = "" Then
        MkDir exportFolderPath
    Else
        ' エクスポート先のフォルダが既に存在する場合は警告を表示します
        If MsgBox("エクスポート先のフォルダが既に存在します。上書きしてよろしいですか?", vbQuestion + vbYesNo, "警告") = vbNo Then
            Exit Sub
        End If
    End If
    
    ' VBAプロジェクトへの参照を取得します
    Set vbProj = ThisWorkbook.VBProject
    
    ' プロジェクト内の各モジュールに対して処理を実行します
    For Each vbComp In vbProj.VBComponents
        ' モジュールの種類を判定して、適切な拡張子を設定します
        Select Case vbComp.Type
            Case 1  ' 標準モジュール
                moduleExt = ".bas"
            Case 2  ' クラスモジュール
                moduleExt = ".cls"
            Case 3  ' フォーム
                moduleExt = ".frm"
            Case Else
                moduleExt = ""
        End Select
        
        ' モジュールをエクスポートします
        If moduleExt <> "" Then
            newFolderPath = exportFolderPath & "\" & vbComp.Name & moduleExt
            vbProj.VBComponents(vbComp.Name).Export newFolderPath
        End If
    Next vbComp
    
    MsgBox "モジュールのエクスポートが完了しました。", vbInformation
End Sub

目的別コードモジュール

Posted by rafavba