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?

夏休みの宿題、ExcelのフォームとVBAだけでAIエージェントを作った話

1
Last updated at Posted at 2026-08-30

はじめに

私の住んでいる地域では、めっきり涼しくなってきました。

今年の夏は、Excel のフォームと VBA だけで動く AI エージェント──名前を「Excelコンボ」といいます──を作ることに没頭していました。いずれ公開します、とこの連載で言い続けてきたものです。ようやく、その「いずれ」が来ました。

八月三十日、GitHub に置きました。
(改訂版30日13時)

置いたのはブックが一つだけです。ダウンロードして開けば、その日から動きます。

直接ダウンロードお試し版 Excelコンボ.xlsm

一つだけ、先に設定をお願いします。Excel のオプション → トラスト センター → マクロの設定 で「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」を ON にする。 フォームの中に置いたデータを読む作りなので、ここが切れていると立ち上がりません。

開いたら、Ctrl + Shift + M でメニューが開きます。対話窓も管理の窓も、ここから呼び出せます。

ただし、先にはっきり書いておきます。これは「お試し版」です。完成品ではありません。

いまも作りかけで、これからも直していきます。私の一台では動いていますが、間違いも、まだ見つかっていないエラーも、あると思って読んでください。 それでも出したのは、どんなものなのかを、実際に触って確かめられる形にしておきたかったからです。文章で読んで想像するより、開いて一往復させてもらったほうが早い。そのための版です。

いわば、夏休みの宿題です。じじいが夏休みの宿題もないものですが、ほかに言いようがありません。ひと夏かけて一つのものを作って、終わりに提出する。やっていたのは、まさにそれでした。

そしてこれは、実践例でもあります。会話するだけで Excel のマクロを作れる VBAマネージャーという道具を、私はこの一年ずっと作ってきました。その道具を使うと、こんなものまで作れてしまう。 今日の記事は、その一つの答えのつもりです。

前回の続きでもあります。前回はこう終わっていました。

借りたものは、まだ返せていません。
返せるものができたら、返しに行きます。

ハルミさんの道具箱から、静的解析の規則を4本もらってきた話です。返しに行った、と言うと格好がつきすぎるので、そうは書きません。ただ、借りるばかりでは落ち着かなかったのは確かです。

宿題

TL;DR

  • ひと夏かけて作った Excelコンボのお試し版を、GitHub で公開しました。マクロ入りのブック1つで完結しています
  • お試し版=作りかけです。完成品ではありません。 間違いも、見つかっていないエラーも残っているはずです。どんなものか触って確かめてもらうための版として出しました
  • これは、会話するだけでマクロを作れる VBAマネージャーの実践例でもあります。あの道具を使うと、ここまでのものが作れます
  • 中身は VBA が12,645行。そのうち 10,285行、八割がユーザーフォームの中にあります。参照設定はExcelの既定のまま、外部のライブラリを一本も足していません
  • Python も、アドインも、拡張機能も要りません。フォームとVBAだけです。AI と話す部分は、Gemini なら HTTP、Claude なら CLI を呼ぶだけで済んでいます
  • 対話窓だけでなく、この夏作った管理フォームも全部入りです。定型・手順書・フォーム・ショートカット・プリンタ・シートの管理──AI 抜きでも使える道具が付いています。この水準のフォーム群を一つの Excel ファイルに閉じたものを、私はほかに知りません
  • それでも「エージェント」と呼べる働きはします。材料を自分で読み、書き、書いた結果を読み戻して自分で直し、止まる条件を自分で持っています
  • いちばん苦労したのは、通信でも VBA でもなく、AI(オーパス)の的外れでした。フェーブルに助けてもらって完走しました。同じ Claude でも、モデルが違えば別人です

何を作ったか

Excelコンボは、Excel のブックの中で AI に注文を出す道具です。

シートを開いたまま対話の窓を出して、日本語で頼みます。「担当ごとの数量合計を出して」「空白行を削除して」「見出しを太字にして罫線を引いて」。調べるだけでなく、書き込みもします。

公開したお試し版には、こういうものが入っています。

  • 定型が34本。 よく頼む一行の注文を選んで撃つ仕組みです。「調べる」「整える・案を出す」「書き換える」「つながり」「マクロ」の五つに分けてあります
  • 手順書が20本。 段取りのある仕事を、手順ごとに完了条件つきで書いたものです。「データの掃除」「表の点検」「数式の監査」「月次の集計表」「CSV取り込み後の整形」といった具合です
  • 練習用のシートが5枚。 何度書き換えても、原本から戻せます。人のブックで試させないための台です
  • 使える AI は二つ。**Gemini(API を直接叩く)と、Claude(Claude Code の CLI 経由)**です

ファイルの大きさは約490KB。この一つに全部入っています。

YouTube の動画も作成しました。実際に動いているところが確認できます。

「フォームとVBAだけ」の中身

タイトルに「フォームとVBAだけ」と書いたので、数字を出しておきます。公開したファイルを、マクロを無効にして開いて数えました。

  • 部品は31個。内訳はユーザーフォームが11枚、標準モジュールが8本、シートとブック本体が12
  • コードは全部で12,645行。うちフォームの中が10,285行で、八割がフォームの中にあります
  • 参照設定は5つ。 VBA、Excel、stdole、Office、MSForms──全部、Excel が最初から持っているものです。追加したライブラリはありません

最後の一行が、この記事で一番言いたいところです。外から足したものが、一つもありません。

Python も要らない。アドインの追加も要らない。拡張機能のインストールも要らない。ブックを一つ開くだけで、AI との対話窓が立ち上がります。

もう一つ、地味ですが効いている作りがあります。設定の置き場もフォームの中です。定型34本も、手順書20本も、設定シートや外部のファイルではなく、フォームそのものに焼き付けて持っています。だから、ブックを一つ持っていけば、中身も一緒に付いてきます。台帳が別にあると、必ずどこかで置き去りになります。

AI と話す部分も、思ったより素っ気ない作りです。Gemini は HTTP で API を叩くだけ。Claude は Claude Code の CLI を子プロセスとして呼んで、標準入力に投げて、返事を読むだけ。特別な橋渡しの部品を、一つも挟んでいません。

この夏作ったフォームも、全部入り

フォームが11枚、と書きました。対話窓のほかに何が入っているのか、並べておきます。

AI の窓が三枚。 対話窓の本体の AI作業窓。マクロを AI に作らせる・直させる AIマクロ。選んだセルの数式を作る・説明する・確かめる AI数式。

管理の窓が七枚。 これが、この夏のもう一つの収穫です。

  • 定型管理・手順書管理 ── AI への注文の正本を育てる窓。増やして、直して、並べ替えます
  • フォーム管理 ── ブックの中のフォームを一覧して呼び出します
  • ショートカット管理 ── マクロに付けたショートカットキーを一覧して、付け替えます
  • プリンタ管理 ── プリンタを一覧して、切り替えます
  • ワークシート一覧 ── シートの一覧と並び替え、非表示のシートの管理まで
  • 名前入力 ── ほかの窓から呼ばれる、小さな入力の部品です

そしてアクティブマクロフォーム。標準モジュールに Sub を書くだけで一覧に並んで実行できる、マクロのメニューです。Excelコンボで AI にマクロを作らせると、ここに並びます。作る窓と、並べる棚が、同じブックの中にあるわけです。

管理の窓は、AI が無くても動きます。キーを貼らなくても、シートの整理やショートカットの付け替えには、開いたその日から使えます。

じつはこの管理の窓たち、ほとんどがこの夏、AI と会話しながら作ったものです。フォーム作りは一枚一枚が手仕事の重労働──というのが去年までの常識でしたが、いまは会話で一枚できてしまいます。だから、気軽に増えました。エージェントの周りに、道具の棚が生えていったひと月です。

ここまで書いて、一歩引いて眺めます。AI の対話窓も、注文の正本も、マクロのメニューも、シート・ショートカット・プリンタの管理も、一つの .xlsm の中で完結している。導入作業も設定ファイルも無く、ファイルを一つ渡せば道具箱ごと動く──この水準のフォームの群れを、一つの Excel ファイルに全部閉じ込めたものを、私はほかに知りません。 自分で画期的と言うのは面はゆいのですが、少なくとも、探した範囲で同じ作りのものは見つかりませんでした。ここは事実ではなく、私の見立てとして書いておきます。

全部入り

それでも「エージェント」と呼ぶ理由

道具の紹介で「AI エージェント」と名乗るのは、少し身構えます。ただ、八月の途中で、呼び方を変えざるを得なくなりました。移住してきた、と書いた回です。

エージェントらしさは、四つの働きに出ています。

一、自分で材料を読みます。 注文を受けたら、対象のシートの構成やデータを、頼まれる前に読んで渡します。人が「この範囲を見て」と教える前に、自分で見に行きます。

二、書きます。 値も、数式も、書式も、行と列の操作も、条件付き書式も。読むだけの相棒ではありません。

三、書いた結果を読み戻して、自分で直します。 ここが一番エージェントらしいところです。書き込んだあと、そのセルを読み返して、狙った値になっているかを自分で確かめます。エラーのセルが出ていれば数えて報告し直す。AI が「できました」と言っても、セルの現実は別物のことがあるからです。これは往復の輪になっていて、上限も、止まり方も決めてあります。

四、止まる条件を持っています。 手順書には、手順ごとに完了条件を書きます。「空白セルが0であること」「元の件数と一覧の行数が一致すること」。済んだと言える証拠を先に決めておく形です。この考え方は、八月の下旬に Claude for Excel に取材して持ち帰りました。

書き込みには、実行前の確認と、[元に戻す]も付けてあります。勝手に走り回るのではなく、任せられる範囲を人が決められる形です。

夏休みの経過

ひと月の並びを、簡単に書いておきます。

八月のはじめ、フォームの中に AI を住まわせる窓ができました。中旬には、外部の橋渡しを全部やめて、純粋な VBA だけで AI と一往復できるようになりました。お盆は道具の手入れをしていました。

下旬が忙しかったところです。Gemini の API を直接叩く経路を作り、定型のタブを付け、書いた結果を読み戻す輪を実装しました。二十八日には Claude for Excel に取材をして、上書き保護・数式で書かせる約束・手順書の三つを持ち帰り、その日のうちに入れました。

二十九日から三十日にかけては、手順書を8本から20本に増やし、送信の待ち方を非同期に作り替えました。待っているあいだも画面が生きていて、経過の秒数が出て、中断が効きます。

そして最後に、手順書20本を人の手を使わずに全部撃ちました。 一本ずつ、対象のシートを原本から戻してから注文を出し、結果を記録する。20本中20本が完走しました。一本あたり三秒から三十秒です。

この「自分で全部撃つ」は、ひと月で一番役に立った作業でした。作った本人が手で試すと、無意識に動く撃ち方を選んでしまいます。機械に回させると、そこが出ます。

一番の苦労は、機能ではなかった

夏休みの宿題ふうに、苦労した話も書いておきます。

正直に書くと、この夏いちばん苦労したのは、通信でも、VBA の罠でも、フォームの設計でもありません。AI の的外れです。

実装はほぼ全部 AI にやらせています。主力は二体の Claude──オーパス(Claude Opus)とフェーブル(Claude Fable)でした。それで、名指しになりますが、オーパスには本当に苦労させられました。

頼んでいないことを提案してくる。指示した範囲の外に、気を利かせた顔で手を伸ばす。ありもしない宿題を自分で発明して、「これを直してから完成にしましょう」と条件を付けてくる。おまけに、間違いを指摘しても、次の的外れが返ってくる。七月に MCP サーバーを壊された話を書きましたが、八月の終わりになっても、調子はあまり変わりませんでした。

そのたびに助けてくれたのがフェーブルです。おかしくなった流れの検分、段取りの立て直し、そして最後の公開作業。この下書きも、フェーブルと作っています。

同じ Claude という名前でも、モデルが違えば別人です。腕の差というより、話の通じ方の差です。道具としての AI の出来は、モデルの選び方で驚くほど変わる──機能の一覧には載りませんが、この夏の大きな学びの一つでした。

事実と見立ての仕分け

例によって仕分けます。

事実。 公開したのは二〇二六年八月三十日、リポジトリは shu1551/excel-combo、置いたのは README とブックの二つです。ブックは約490KB。部品31個(フォーム11・標準モジュール8・シート等12)、コード12,645行のうちフォームの中が10,285行、参照設定が既定の5つだけ、というのは公開したファイルを開いて数えた実測です。定型34本・手順書20本も同じく実測。手順書は公開の前夜に20本とも自動で撃って、20本とも完走しています。手を動かした実装は全部 AI(Claude)で、私がやったのは判断と、実機での確認です。

見立て。 「エージェントと呼べる」の線引きは、私が引いたものです。四つの働き(読む・書く・読み戻して直す・止まる条件)をその根拠に選んだのも私です。「この水準のフォーム群を一つのファイルに閉じたものは、ほかに知らない」も、私が探した範囲での話です。断定はしません──ただ、あったら教えてほしい、とは思っています。

正直な線引き

道具の話なので、動く条件を書いておきます。

  • Windows 版の Excelでの話です。Mac や Web の Excel では動きません。私の環境は Windows 11 と 64bit の Excel です
  • Excel のオプションで**「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」を有効にする**必要があります。フォームの中に置いたデータを読む作りなので、ここが切れていると立ち上がりません
  • API キーは自分のものを使ってください。 料金は自分のキーに掛かります。Google の AI Studio で無料の枠から始められます
  • Claude の経路を使うには、Claude Code の CLI が入っていて、ログインが済んでいることが要ります
  • 定型34本と手順書20本は、私が自分の仕事に合わせて育てたものです。そのまま他の人に合うとは限りません。増やせる作りにはしてあります
  • ダウンロードしたファイルは、Excel が保護されたビューで開きます。動かすには許可の操作が要ります
  • そして一番大きい線引き。これは作りかけの「お試し版」です。 完成品として出したのではありません。手元で20本の手順書を通したとはいえ、まだ他人の手元で一度も動いたことがありません。私の一台で動いているだけです
  • なので、うまく動かないところは、たぶんあります。 見つけたら教えてください。直します。この版は、そのために出したものです

おわりに

ひと月かけて作ったものを、一つのファイルにまとめて、置いてきました。

子どもの頃の宿題は、出したら終わりでした。こちらは、そうはいきません。作りかけだと自分で書いたとおり、直したいところはいまも増え続けています。触った人から「動かない」が届けば、それも宿題に加わります。むしろ、宿題を増やすために提出した──そのほうが正しいのかもしれません。

提出

夏休みの宿題は、出しました。

二学期も、続けます。

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?