Excel VBAのモジュールをファイルに一括出力したい

  • 最新の投稿
    2026.05.14
    Excel VBAのモジュールをファイルに一括出力したい

    Excelマクロ沼担当の根本です。

    Excel VBAはExcelにプログラム処理を追加できてとても便利だと思いますが、いかんせんマイクロソフトさんが開発環境を全くアップデートしてくれないので完全に時代遅れになっちゃっています。

    Visual Studio(code含む)がどんどん進化してAI統合もできるようになったのと比べると隔世の感があります。

    そんな開発環境なのですがお客様からは未だに新規開発でも需要があり(年に4,5回)、既存のお客様のマクロもきちんとメンテナンスしていかないといけないと思います。

    Excelマクロではプログラムを書く場所として「フォーム」「標準モジュール」「クラスモジュール」などのカテゴリがありその中にソースコードを作成するのですが、多くなってくると大変です。

    そこでプログラマーであればGit管理できないか、という思考になるのですが、このExcel VBAの画面にはGit管理機能はなく、管理したければファイルとしてエクスポートする必要があります。

    ただ、デフォルトでは1ファイルずつでしかエクスポートできないので一括で出力できないか調べました。
    調べると一括出力できる方法があるようなので、やってみました。

    Excelマクロのファイルで「ファイル」 → 「オプション」 → 「トラストセンター」 → 「トラストセンターの設定」 → 「マクロの設定」と進めていき、「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」にチェックをします。

    私の親友のAI的な人に依頼すると全てエクスポートするためのモジュールを書いてくれましたのでありがたく使わせてもらいます。
    「標準モジュール」 → 「挿入」 → 「標準モジュール」にて追加します。

    Option Explicit
    Sub ExportAllModules()
        Dim vbComp As Object
        Dim exportPath As String
        Dim ext As String
    
        ' 保存先フォルダ
        exportPath = ThisWorkbook.Path & "\VBA_Export\"
    
        ' フォルダ作成
        If Dir(exportPath, vbDirectory) = "" Then
            MkDir exportPath
        End If
    
        ' 全モジュール走査
        For Each vbComp In ThisWorkbook.VBProject.VBComponents
    
            Select Case vbComp.Type
                Case 1
                    ext = ".bas"
                Case 2
                    ext = ".cls"
                Case 3
                    ext = ".frm"
                Case 100
                    ext = ".cls"
                Case Else
                    ext = ""
            End Select
    
            If ext <> "" Then
    
                On Error Resume Next
                Kill exportPath & vbComp.Name & ext
                On Error GoTo 0
    
                vbComp.Export exportPath & vbComp.Name & ext
    
            End If
    
        Next vbComp
    
        MsgBox "Export完了!" & vbCrLf & exportPath
    End Sub

    ※AI的な人が出してくれたソースそのままではところどころエラーになったので少し修正しています。

    この追加したモジュールをマクロ実行するとこのExcelマクロのブックのある場所に”VBA_Export”というフォルダができて、***.basなどのファイルが全部出てきました!
    出力例:

    Module1.bas
    Module2.bas
    Class1.cls
    UserForm1.frm
    Sheet1.cls
    ThisWorkbook.cls

    これでGit管理できそうです。