はじめに
以前会社にいた人が作ったExcelのマクロがあって、その人がいなくなった後に残された人はどうやって作ったのかわからないけどとりあえず動くので使い続けている...こんなことないですか?
そして、少し修正したいけどどこをどう修正したらいいのかわからない...こんなことないですか?
それ、AIエージェントで解決できるかもしれません。
この記事は、msoffice-skills/ を使って Excel マクロ有効ブック(.xlsm)の VBA を調査し、改善案を作成し、修正コードを反映するための手順例です。
概要
.xlsm ファイルの VBA は、ブック内部でバイナリ形式として保存されています。そのため、AI やスクリプトで .xlsm に直接安全に書き戻すのではなく、次の流れで作業します。
-
.xlsmから VBA をテキストファイルとして書き出す。 - 書き出した
.bas/.cls/.frmを AI が分析する。 - 改善案を Markdown にまとめる。
- 必要な修正を
_VBA/フォルダ内のテキストファイルへ適用する。 - ユーザーが Excel の Visual Basic Editor(VBE)へ貼り付ける。
- 再度 VBA を書き出して、修正が反映されているか確認する。
この方法にすると、修正前後の差分を確認しやすく、元ファイルを壊すリスクも抑えられます。
前提
作業には Python 3 と oletools が必要です。
pip3 install oletools
修正した VBA を .xlsm に反映するには Microsoft Excel が必要です。反映作業では Excel の Visual Basic Editor(VBE)を使います。
修正作業
以下の手順で修正ができます。
ファイル配置
作業フォルダに、対象の .xlsm と msoffice-skills/ を置きます。
作業フォルダ/
├── マクロファイル.xlsm
└── msoffice-skills/
msoffice-skills/ がまだない場合は、GitHub から取得します。
git clone https://github.com/shinob/msoffice-skills.git
Codex または Claude Code を起動
作業フォルダで Codex または Claude Code を起動します。
cd 作業フォルダ
codex
まず、スキルの内容を確認させます。
msoffice-skills/ の内容を確認してください
続けて、対象ファイルの改善検討を依頼します。
このスキルを使って マクロファイル.xlsm の改善を検討したい
AI は通常、次の作業を行います。
-
msoffice-skills/xlsm-vba-edit/SKILL.mdを読む。 - 対象ファイルのバックアップを作成する。
-
export_vba.pyで VBA を書き出す。 - 書き出された VBA を分析する。
- 改善案を
マクロファイル_analysis.mdにまとめる。
実行すると、次のようなファイルとフォルダが作成されます。
マクロファイル_analysis.md
マクロファイル_VBA/
├── ExcelObjects/ ThisWorkbook や Sheet1 など
├── Forms/ UserForm
├── Modules/ 標準モジュール
└── Classes/ クラスモジュール
標準モジュールは Modules/Module1.bas や Modules/Module2.bas のようなファイルとして出力されます。
分析結果を確認
分析レポートには、通常次の内容が含まれます。
- どのモジュールにどの処理があるか
- どの処理が危険か
- どこを修正すべきか
- 修正の優先度
- 修正方針
- 修正後の確認項目
まずは マクロファイル_analysis.md を読み、どの修正を実施するか決めます。
修正を依頼
改善案のうち、実際に修正したい項目が決まったら、AI に具体的に依頼します。
優先度の高い項目だけを修正する例:
マクロファイル_analysis.md の修正項目を確認し、優先度 High の項目だけを マクロファイル_VBA/ 内の対象ファイルに適用してください。
完了後、以下をまとめてください。
1. 修正したファイルの一覧
2. 各ファイルの変更内容
3. VBE への貼り付け手順
特定の項目だけを修正する例:
今回は ActiveSheet 依存をなくす修正だけを適用してください。
この時点で修正されるのは _VBA/ フォルダ内のテキストファイルです。元の .xlsm にはまだ反映されていません。
修正内容を確認
AI が _VBA/ フォルダ内のファイルを修正したら、変更内容を確認します。
確認するポイント:
- 修正対象のモジュールが正しいか
- 不要な機能変更が混ざっていないか
- 既存の処理順序が不用意に変わっていないか
- エラー処理や後始末が不足していないか
- VBE に貼り付ける対象ファイルが明確か
VBE に貼り付け
修正内容を .xlsm に反映するには、Excel の VBE に貼り付けます。
手順:
- Excel で
マクロファイル.xlsmを開く -
Alt + F11で Visual Basic Editor を開く - 左側のプロジェクトツリーから対象モジュールを開く
- 既存コードを全選択する
- 既存コードを削除する
- 修正済みの
.basまたは.clsの内容を貼り付ける - 修正対象が複数ある場合は、同じ作業を繰り返す
- Excel で保存する
貼り付け対象の例:
マクロファイル_VBA/Modules/Module2.bas
→ VBE の Module2 に貼り付ける
マクロファイル_VBA/ExcelObjects/ThisWorkbook.cls
→ VBE の ThisWorkbook に貼り付ける
Attribute VB_Name = ... のような行が含まれている場合があります。これは VBA の内部メタデータです。基本的には、AI が指示した単位でモジュール全体を貼り付けます。
反映後に確認
VBE への貼り付けと保存が終わったら、AI に確認を依頼します。
VBE への貼り付けと保存が完了しました。
export_vba.py で マクロファイル.xlsm を再書き出しし、修正内容が反映されているか diff で確認してください。
AI は再度 export_vba.py を実行し、修正済みファイルと再抽出したファイルを比較します。
確認するポイント:
- VBE に貼り付けた内容が
.xlsmに保存されているか - 意図した修正だけが反映されているか
- VBE による自動整形以外の差分がないか
- 修正対象外のモジュールに差分が出ていないか
動作確認
VBA の反映確認が終わったら、Excel 上で動作確認します。
最低限、次の項目を確認します。
- マクロがコンパイルエラーにならないこと
- 対象機能が正常に動くこと
- 既存機能が壊れていないこと
- エラー発生時に分かるメッセージが出ること
- ファイル保存や終了処理が想定どおりであること
VBE では、メニューから デバッグ → VBAProject のコンパイル を実行して構文エラーを確認できます。
サンプルプロンプト
改善点を調査したい場合:
msoffice-skills を使って マクロファイル.xlsm を分析してください。
バグ、クラッシュリスク、保守性の問題を調査し、結果を マクロファイル_analysis.md にまとめてください。
修正を適用したい場合:
マクロファイル_analysis.md の修正項目を確認し、優先度 High の項目だけを マクロファイル_VBA/ 内の対象ファイルに適用してください。
完了後、修正したファイル一覧と VBE への貼り付け手順をまとめてください。
特定の修正だけを適用したい場合:
今回は H-1 と H-2 のみ適用してください。
反映確認をしたい場合:
VBE への貼り付けと保存が完了しました。
export_vba.py で マクロファイル.xlsm を再書き出しし、修正内容が反映されているか diff で確認してください。
安全に使うためのルール
VBA 修正では、次のルールを守ると事故を減らせます。
- 元の
.xlsmを直接編集する前に、必ずバックアップを作る。 - 修正前に
export_vba.pyで VBA を書き出す。 - まずは分析レポートを作り、修正範囲を決めてからコードを変更する。
- 複数の大きな修正を一度に入れない。
-
_VBA/フォルダ内の修正内容を確認してから VBE に貼り付ける。 - VBE へ貼り付けた後は、再度
export_vba.pyで書き出して差分確認する。 - 最後に Excel 上でマクロのコンパイルと動作確認を行う。
まとめ
msoffice-skills/ を使った VBA 修正では、.xlsm を直接書き換えるのではなく、VBA をテキストファイルに書き出してから分析・修正します。
修正したコードは、最後にユーザーが Excel の VBE に貼り付けて保存します。この流れにすることで、修正内容を確認しやすくなり、バックアップや差分確認もしやすくなります。
これは便利。