Excel VBAのコードを一括でエクスポート(.bas書き出し)する方法|バックアップ・Git管理にも

Excel・VBA

マクロ入りのExcelが壊れると、中のVBAのコードも一緒に失われてしまいます。コードを .bas などのテキストファイルに書き出しておけば、バックアップになるだけでなく、Git で変更履歴を管理したり、引き継ぎ資料として渡したりもできます。

この記事では、VBAのコードをエクスポートする方法を3つ紹介します。

※この記事の後半で紹介するツールは、当ブログ(自動化ラボ)の筆者が開発・販売しているものです。

方法1:VBAエディタで1つずつエクスポート

  1. Alt+F11 で VBAエディタを開く
  2. 左の「プロジェクト」で、書き出したいモジュールを右クリック
  3. 「ファイルのエクスポート」を選んで保存

標準モジュールは .bas、クラスモジュールやシートのコードは .cls、ユーザーフォームは .frm(+画面データの .frx)で保存されます。数が少なければこれで十分ですが、モジュールが多いと大変です。

方法2:マクロで一括エクスポートする

VBAから VBProject を操作すると、すべてのモジュールをまとめて書き出せます。ただし事前に、Excelの「ファイル」→「オプション」→「トラスト センター」→「トラスト センターの設定」→「マクロの設定」で、「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」にチェックを入れる必要があります。

Sub ExportAllModules()
    Dim comp As Object, ext As String, folder As String
    folder = ThisWorkbook.Path & "\export\"
    If Dir(folder, vbDirectory) = "" Then MkDir folder

    For Each comp In ThisWorkbook.VBProject.VBComponents
        Select Case comp.Type
            Case 1: ext = ".bas"          ' 標準モジュール
            Case 2, 100: ext = ".cls"     ' クラス・シート・ブック
            Case 3: ext = ".frm"          ' ユーザーフォーム
        End Select
        comp.Export folder & comp.Name & ext
    Next
    MsgBox "書き出しました:" & folder
End Sub

⚠ 「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」は、他のマクロからもVBAを書き換えられるようになる設定です。使い終わったらチェックを外しておきましょう。会社のパソコンでは変更できないこともあります。

方法3:無料ツールでフォルダごと書き出す(Excel不要)

書き出したいブックがたくさんある、設定を変えたくない、という場合は、無料の「マクロ書き出しくん」が使えます。

ファイルやフォルダを選んで「実行」を押すだけ
ファイルやフォルダを選んで「実行」を押すだけ
  • Excelを起動せずに読み取るので、マクロが勝手に動かない・トラストセンターの設定変更も不要
  • フォルダを選ぶと、中のマクロ入りファイル(.xlsm / .xls / .xlsb / .xlam など)をまとめて書き出し
  • ブックごとのフォルダに、モジュールごとのファイル(.bas / .cls、フォームのコードは .frm.txt)を出力
  • ファイル・モジュール・種類・行数の一覧(CSV)も作成
  • 元のファイルは読み取るだけで変更しない
ブックごとのフォルダにモジュールを書き出し
ブックごとのフォルダにモジュールを書き出し

※パスワードでロックされたVBAプロジェクトは書き出せません。

書き出したコードを Git で管理するコツ

  • 書き出し用のフォルダを Git のリポジトリにして、変更のたびに書き出し → コミット
  • 差分(diff)で「いつ・どこを変えたか」が一目で分かる
  • ブック本体(.xlsm)はバイナリなので、差分はコードのテキストで見るのがおすすめ

まとめ

  • 少しなら VBAエディタの「ファイルのエクスポート」
  • マクロで一括書き出しもできるが、トラストセンターの設定変更が必要
  • 大量のブックをまとめて・安全に書き出すなら無料ツールが手軽

あわせて読みたい

ほどき工房のExcelツール

Microsoft Excel、Microsoft Office、Visual Basic は Microsoft Corporation の商標です。

マクロ全体の中身を把握したい方へ
ココナラで作業をお受けしています(筆者のサービスです)。→ 引き継いだExcelマクロを解析し、仕様書にします(ココナラ)

コメント

タイトルとURLをコピーしました