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