1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

XVBA+CodexでExcelマクロをVibeCodingしてみた

1
Last updated at Posted at 2025-12-08

経緯

マクロ付Excelファイル(.xlsm)を指定して「このファイル内のマクロを編集できるか?」とCodexに聞いてみたところ、

こちらのターミナル環境から XXXXXX.xlsm の VBA モジュールを直接編集する術はありません。

との回答。実際に使ってみた感じ、マクロではなくシート内の情報であれば簡単な編集まではしてくれるが、どうやらマクロの直編集はできないらしい。
そこでXVBAというVSCODEの拡張機能を使ってみることにしました。XVBAではxlsmファイルからマクロをモジュール毎に単一のファイルとして外出しにできます。外出しにしたマクロを参照・編集してもらうことでVibeCodingをしてみようという内容です。

実際に既存マクロの仕様変更に使ってみたところ、意図通りの修正をしてくれました。

以前マクロをGitで管理したくなったときにXVBAを使っていたのですが、今後AIにマクロを編集してもらうのにも使えそうで、それなら世の中的に需要があるかもと思い記事にしました。

想定読者

  • ExcelマクロをCodexでVibeCodingしたい人/解説させたい人
  • ExcelマクロをGit管理したい人

筆者環境

  • Windows
  • VSCode Ver.1.106.3
  • XVBA Ver.4.0.30
  • Codex
    • 2025/12現在 OpenAI APIキー or ChatGPT Plusに契約で使えるようになります。
  • Microsoft 365 Excel
    • ここはXVBAが使えるかどうかが大事だと思いますが、昔Office2016のExcelでも動いていたのでよっぽど古くなければ大丈夫だと思います。

この記事ではVSCode・Excel・Codexそのもののセットアップは含みません。事前準備としてこれらは動く環境をご用意ください。

XVBA

前半はXVBAというVSCodeの拡張機能を使ってExcelマクロを外出しにする部分を説明していきます。

概要

XVBA - Live Server VBA
https://marketplace.visualstudio.com/items?itemName=local-smart.excel-live-server

Excelブックから、マクロのソースコードをテキストデータとして出力でき、編集後、再度Excelブックへ入力できます。

可能になること

  • 標準エディタではなくVSCodeでコーディングできるようになります。VSCodeで提供されているサポートの機能を享受できます。
  • マクロのソースコードがExcelブック外に出るため、Gitによるバージョン管理を行えるようになります。
  • Excelブック外に出たソースコードをAIに参照/編集させることでVibeCodingが実現できます。

注意
私の感覚とは逆なのですが、インポートエクスポートの関係は次のようになっています。この記事でも次のイメージで書いていきます。

XVBA処理イメージ_処理イメージ.png

事前準備

Excelを開き、
ファイル > オプション > セキュリティ センター > セキュリティ センターの設定 > マクロの設定
の順で進み、
VBA プロジェクト オブジェクト モデルへのアクセスを信頼する(V)
にチェックを入れます。これをやっておかないとXVBAでマクロをインポート/エクスポートできません。

トラストセンター_アクセス許可.png

また、マクロにパスワードがかけられている場合、インポート時にエラーが出ます。マクロのパスワードを解除するか、後述するインポート時にVBAの標準エディタを立ち上げ一度パスワードを入力し開いた状態で再度インポートボタンを押下すればOKです。

XVBAのインストール

VSCodeを起動し、画面左の拡張機能ボタンを押下し、検索欄にXVBAと入力して、検索結果内からXVBA - Live Server VBAを選び、インストールします。

拡張機能インストール.png

操作例

1. 作業フォルダを用意する

任意のフォルダにxlsmファイルを置きます。ここが作業フォルダになります。

2. VSCodeで作業フォルダを選ぶ

ファイル(F)などから、先ほど作った作業フォルダを指定する。

エクスプローラーに作業フォルダの名前が表示される。
XVBAのインストール作業が成功していれば、XVBA - MACRO LISTで表示されているはずです。

インストール後.png

3. プロジェクト作成

左から1番目のボタンを押下し、
Create Excel VBA Projectを押下します。
そのxlsmファイルに関するプロジェクトが構成され、各種フォルダが作られます。

Create_Excel_VBA_Project.png

4. インポート

Config.jsonを開き、excel_fileをこのExcelブックのファイル名に変更します。

左から二番目のボタンを押下し、Excelブックからマクロのソースコードを出力し、取り込む。

正常に終了すれば、エクスプローラー上のvba-filesでモジュールを確認できるようになります。

Import.png

ここまできたら、手動編集またはVibeCodingしていきます。

5. エクスポート

編集が完了したら、マクロファイルを元のExcelブックに入れていきます。

XVBAのメニューの左から4番目のボタンを押し、Export VBA -> Developmentで、Excelブック内に.basや.clsファイルの内容が入っていきます。

以上がXVBAの説明になります。Git管理したいだけの場合はあとは外に出した.basファイルなどをGitの管理ファイルに含めればOKです。

Codex

この項からCodexを使ったVibeCodingをしていきます。といってもAGENTS.mdを用意して、AIにお願いするだけです。

AGENT.mdの準備

Codexを含めコーディングエージェントには作業フォルダのルートにAGENTS.mdというファイルを配置しておくと、ここに書かれているルールに従ってくれます。
とりあえず今回はこんな感じで書きました。

## 前提

- 日本語で回答してください。

- XVBAを使用しています。  
  https://marketplace.visualstudio.com/items?itemName=local-smart.excel-live-server

- config.jsonの"excel_file"に記載されているExcelブックファイルからXVBAを使用してマクロをアウトプットしています。編集する場合はこの中にあるマクロを編集してください。

- Agent側でExport/Importは実行する必要はありません。

AGENTS.mdではもっと効果的な書き方があると思いますが、こんな雑な指示でもちゃんと意図を理解して直してくれました。
最後の一文は何度かやっているうちに、エクスポートを勝手にやることがあり失敗していたので追加した文です。Excelブック内に戻す前に人間が確認したいので(あとXVBA自体がやや不安定な感じするので)手動でやることにしています。

プロンプト実行

画像の通り、プロンプト実行すると.basや.clsファイルを直してくれます。
この後は前述の通り、エクスポートしなおせばOKです。

プロンプト実行.png

修正させる場合のコツ

「このExcelファイルのA1セルになんて書いてあるかは読める?」
「マクロでどういった処理ができるか説明して」
「こういった入力でマクロ実行したらどうなるか説明して」
などのように問い、Excelファイルを読めていること・マクロの意図を把握できていることを確認した上ですり合わせていく形で修正させると意図通りに修正してくれることが多い印象です。

こんな時は

インポートしたbasファイルの非ASCII文字が文字化けしている(UTF-8で読み込まれている)

VSCODE側で文字コードを推測して開くように設定するのが楽です。

インポートボタンを押して「Finish」と表示されるのに出力できない場合

次のことを確認・試してみてください。

  • VSCodeは1つだけ起動するようにしてください。
    • 2窓していて、後から起動した方でXVBAを動かしていると、1窓目の作業フォルダ内にマクロファイル群が出力されました。
    • この現象は筆者がインストールしたXVBA Ver.4.0.30ではほぼ確実に発生していました。
  • Excelブックのファイル名をASCII文字のみにする。
    • 昔使ったときASCII文字だけしか受け付けなかった気がするんですが、今のVer.では大丈夫そうでした。
  • Excelブックを開いてMicrosoft Visual Basic Applicationsでマクロを開いている状態でインポートしてみる。
    • これは昔からそうで、今でも効くときがある印象。

Excelブックを開きなおしたらシートが消えてしまった場合

Excelブックを閉じている状態で編集していて、ブックを開きなおしたときシートが消えてしまったように見えることがあります。
そういった場合はリボンメニューの表示 -> 再表示で再表示できます。

再表示.png

まとめ

今後システム開発にExcelマクロを含めていくことはまず無いとは思いますが、レガシーな資材をメンテしないといけないシチュエーションもあるかと思います。そういったときの一つの選択肢になれば。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?