マクロ入りのExcelが壊れると、中のVBAのコードも一緒に失われてしまいます。コードを .bas などのテキストファイルに書き出しておけば、バックアップになるだけでなく、Git で変更履歴を管理したり、引き継ぎ資料として渡したりもできます。
この記事では、VBAのコードをエクスポートする方法を3つ紹介します。
※この記事の後半で紹介するツールは、当ブログ(自動化ラボ)の筆者が開発・販売しているものです。
方法1:VBAエディタで1つずつエクスポート
- Alt+F11 で VBAエディタを開く
- 左の「プロジェクト」で、書き出したいモジュールを右クリック
- 「ファイルのエクスポート」を選んで保存
標準モジュールは .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ツール
- マクロ書き出しくん(無料):マクロのコードをまとめてファイルに書き出し
- 数式チェックくん:#REF!・外部リンク・直接入力の数値などを一覧に
- VBA整形くん:VBAのインデントを一括で整える
- マクロ解読くん:マクロの仕様書(Excel/Word)を自動作成
- 64bit対応チェックくん:64bit版で動かない書き方を検出
- マクロ比較くん:改修前後のマクロを新旧対照表に
- マクロ棚卸しくん:フォルダ内のマクロを一括調査
Microsoft Excel、Microsoft Office、Visual Basic は Microsoft Corporation の商標です。
マクロ全体の中身を把握したい方へ
ココナラで作業をお受けしています(筆者のサービスです)。→ 引き継いだExcelマクロを解析し、仕様書にします(ココナラ)


コメント