はじめに
昨日、ハルミさんの VBA-HTTP を読んで「同じ側に、もう一人来た」という記事を書きました。外の人の話です。
あの記事の最後に、私がいま作っている Excelコンボの近況を「振り」として置きました。定型のタブが付いたこと、「このブック全体の構成を調べて」が往復1回・1秒で返るようになったこと。詳しい話は次回に、と書いて終えています。
今日がその次回です。自分の側の話をします。
ただ、書こうとして並べてみたら、出来事の並びより大きいことが一つ見えました。速さを測って、往復を数えて、落ちたときの立て直しを入れて──そこまでやって振り返ったら、AI が Excelコンボに移住していました。 通ってくる相棒ではなく、住民になっていた。しかも、単に移住してきただけかと思っていたら、地域おこし協力隊員──つまり AI エージェントとしての働きを、もう持っていました。 今日はその話を、起きた順に書きます。
TL;DR
- Excelコンボに、よく頼む指示を選ぶ「定型」のタブが付きました。複数選べて、正本はシートにあります
- 選んだ定型に合わせて材料を先に読んで渡すようにしたら、「このブック全体の構成を調べて」が 往復1回・1秒になりました(Gemini の一番軽いモデル・私の一台での実測)
- Claude のほうは、VBA が Claude Code を子プロセスとして会話のあいだ生かしておく形にしました。2通目以降は 0.9秒で返ります
- 速さの正体を測ったら、あると思っていた起動の固定費は無く、残っていたのはモデルが文字を書いている時間そのものでした。そこは道具では縮みません
- だから「調べて・教えては Gemini、道具を渡して手を動かすのは Claude」に落ち着きました
- 翌朝、ループを入れました。実体は「AI に、自分が書いた結果を見せる」ことです。書く→見る→直す→完了、を AI が一周します。昼には、落ちたときの立て直しも入れました
- AI の手は VBA です。セルと数式だけでなく、マクロの一覧・本文・置き換え・実行・影響範囲まで注文一つで届きます。この一年で Copilot・Claude for Excel・ChatGPT for Excel と、大手三社がそろって Excel の中で動く AI を出してきました。どれもエージェントですが、手はセルと数式で止まります。こちらは VBA の中に住んでいるので、VBA まで届く。これから作り上げるものだと思っていた AI エージェントに、もうほぼなっていました
- そこまでやって気づきました。AI は Excelコンボに移住していました。 単に移住してきただけかと思っていたら、地域おこし協力隊員──つまり AI エージェントとしての働きを、もう持っていました。 土地勘があり、留守を預かり、外へ使いにも出られる。任期のない隊員です
定型を、選べるようにした
Excelコンボは、Excel の中に AI を住まわせて、開いているブックを見ながら会話する窓です。八月の頭に一度書きました。
あのときは、指示を一つ選んで撃つ道具でした。八月二十二日に直したのは、まずそこです。
よく頼む指示を「定型」として四十五本並べて、タブの一番手前に置きました。【調べる】【整える・案を出す】【つながり・引き継ぎ】【マクロ】の四つの見出しで区切ってあって、複数を選んで一度に投げられます。「このシートの表の作りを教えて」と「この表の重複データを見つけて」を同時に、という具合です。
置き場所で一つ、自分の決めごとに従いました。AI は最初、定型の本文を設定ファイルとして外に持たせる案を出しました。私は、ブックの設定シートでよいのではないか、と返しました。この家の道具は、データをブック自身に持たせる決まりで作ってあります。シートに置いたら「編集機能」の大半が消えました。増やす・直す・並べ替えるは、既にある管理フォームの複製で足りた。家にもう同じ型があるなら、それに合わせる。 これだけで、作る量も、覚えることも、半分になります。
材料を先に渡したら、往復が一回になった
次に直したのは、速さです。ここが今日の話の入り口になりました。
それまでの Excelコンボは、AI が「シートの構造が見たい」「この範囲の値が欲しい」と文字で要求し、VBA が読んで返し、それを見て AI がまた要求する、という往復で仕事をしていました。「このブック全体の構成を調べて」だと、往復が二回か三回。時間は相手しだいで、Gemini の直叩きなら二、三秒、Claude の sonnet なら一分近く。
そこで、選んだ定型に応じて、要りそうな材料を最初から付けて渡すようにしました。「ブック全体」と言われたらシートの一覧と各シートの構造とマクロの一覧と名前の一覧を、「この数式」と言われたら参照元と参照先を、最初の一通に添える。住民が道を聞かないのと同じで、聞かれる前に持っていく。
これを入れた目的は Claude の往復を減らすことでした。ところが一番効いたのは、Gemini のほうでした。
「このブック全体の構成を調べて」──往復1回・1秒。 シートが三枚あること、目次シートに何があるか、設定シートに何が入っているか、書式シートの役目、マクロの傾向まで、一通りが返ってきます。モデルは Gemini の一番軽いもので、私の一台での実測です。
笑ってしまいました。同じ問いに Claude の sonnet は三十六秒かけて千九百トークンを書いていました。その横で、一番軽い Lite が一秒で全体をまとめて返してくる。しかも中身が薄くない。
一秒というのは、速い遅いの話ではなくて、聞くか聞かないかが変わる数字です。十六秒なら、聞くのをためらう。一秒なら、聞いてしまう。
Claude を、会話のあいだ生かしておく
Claude のほうも、手を打ちました。
Excelコンボの claude エンジンは、それまで往復のたびに Claude Code を丸ごと起動していました。claude -p を素で撃つと、起動から終了まで十三秒。ここを、VBA が Claude Code を子プロセスとして立ち上げ、会話のあいだ生かしておく形に変えました。
中身は、CreatePipe と CreateProcessW を VBA から直に叩いて Claude Code を起動し、標準入力のパイプを VBA が握ったまま離さない。指示は JSON を一行ずつ流し込み、答えは出力ファイルに増える行を見張って拾う。モデルや道具の設定を変えたら畳んで立て直し、話の途中なら文脈を引き継いで立て直す。フォームを閉じれば止まる。
これで、2通目以降は0.9秒で返るようになりました。
実装は全部 AI(Claude)がやっています。私がやったのは、「道具を渡しても渡さなくても時間が変わらないのはなぜか」と聞いたことと、出てきた案のうち「常駐させる」と「材料を先に渡す」の二つを選んだことです。
速さの正体を測ったら、固定費は無かった
ここから、話が少し転びます。
常駐させても、一通目は遅いままでした。AI は「起動に十三秒かかるから、一通目だけは縮まない」と説明しました。私は、十三秒はおかしいのではないか、と返しました。
測り直したら、十三秒という固定費は存在しませんでした。 最初に測った十三秒は、プロセスの起動と終了まで込みの数字で、起動直後に送れば 2.6秒で返る。つまり常駐が効いているのは「毎回プロセスを立てて畳む時間」を払わなくなった点で、一通目の遅さは最初からモデルの生成時間でした。AI が、自分の速さを知らなかった。
では三十六秒は何だったのか。API が申告した内訳を見ると、出力が1,934トークン、入力は実質2トークン(残りはキャッシュ読み)。三十六秒は、sonnet が千九百トークンを毎秒五十トークン前後で書いている時間そのものでした。思考の深さの設定を変えても速さは変わらず、haiku に替えると毎秒九十トークンでちょうど倍速。入力側はキャッシュが効いているので、材料を先に付けても時間も値段もほとんど増えていない。
ここで分かったのは、道具で縮められるのは外側だけ、ということです。起動、パイプ、読み書き、往復の数。そこは全部削れた。残ったのは、モデルが一文字ずつ書いている時間で、そこは API を直に叩いても同じです。
だから、使い分けが決まりました。
- 調べて・教えて・案を出して → Gemini(直叩き)。一秒
- 道具を渡して、実際にマクロや範囲に手を動かす → Claude。遅くても、道具を握れるのはこちらだけ
速さ比べで負けたから Claude を外す、という話ではありません。今の Excelコンボで、VBAマネージャーの道具を持たせて実際にブックを触らせられるのは Claude だけです。調べるのは速いほう、動かすのは道具を持てるほう。 数字を並べたら、線がはっきり引けただけです。
翌朝、ループを入れた ── AI に結果を見せる
八月二十三日の朝、前から枠だけ置いてあった「ループ」のチェックに中身を入れました。
設計の前に、AI 二体に案を出させました。一体は、書き込みのたびに「正しければ TRUE になる検算式」を AI に一本添えさせて、Excel に判定させる案。もう一体は、AI に、自分が書いた結果を見せる案。検算式の案は「Excel に確かめさせる」という向きが正しくて、数の仕事には効きます。ただ毎回式を書かせるのは数の仕事にしか効かず、その式自体が AI 製です。私は後者を選びました。
後者の案が指摘したのは、こういうことでした。往復自体は、もう回っていた。 最大七往復、AI が材料を要求すれば返してもう一周、要求が無くなれば終わり。足りなかったのは往復ではなく、AI が書き込んだ後に目隠しのままだったことです。「書き込みました」としか返らないので、セルに 45,200 が出たのか #REF! が出たのか 0 が出たのか、AI は知らずに「完了です」と言っていた。Claude Code が、道具を使った結果を見ずに次へ進んでいるのと同じ状態です。
そこで、ループを入れると、こうなります。
- 書き込みの後、書いた範囲のいまの値(式なら式、エラーならその表示)と、エラーセルの数の前後が、AI に材料として返る
- AI はそれを見て、指示どおりか確かめ、違えば直し、合っていれば「完了」と書いて止まる
- 止まり方は五つ。完了と言った/同じ場所に同じ内容を二回書こうとした/直してもエラーが減らない往復が二回/上限の十二往復/人が止めた
- ループ中の書き込みは、実行を押す前の状態を退避しておき、[元に戻す]で戻せる。戻り先は常に「人が最後に見た状態」で、AI が二回直した途中には戻らない
入れて、撃って、動きました。「まあとりあえずは動いているようだ」というのが、そのときの私の感想です。
これが効くのは、AI が書くマクロや数式の間違いの大半が、画面に出るからです。#NAME?、#REF!、範囲が一行ずれる、コンパイルが通らない、合計が 0。人が一瞥して気づく類のものは、AI にも見せれば気づける。拾えないのは「もっともらしいが違う数」で、そこは人の目の仕事として残します。
昼には、落ちたときの立て直しを入れた
ループが回るようになると、次に気になるのは、転んだときです。止まり方は五つあるのに、立て直しが一つも無い。そして、VBA 側が実行時エラーで落ちたことが、AI に届いていなかった。
昼に三つ入れました。
- VBA が落ちたことを、次の往復で AI に渡す。 エラーの番号と説明と、直前に何をしていたかを持っておき、次の実行の末尾に「前回はこのエラーで中断した。同じ要求を繰り返さず別の手を」と付ける。それまでは画面の履歴に出るだけで、AI は知らずに同じ要求を繰り返していました
- 「エラーが減らない二回」で止めるのではなく、書く前の値に戻してやり直す。 一度だけ。戻したうえで「今の手は外れ。エラーの種類から原因を見直して別の手で」を材料に入れる。それでも減らなければ、今までどおり止めて報告する
- 約束事に一行。エラーセルは数を減らそうとせず、種類を見て原因から直す。 #REF! と #NAME? と #DIV/0! では、直し方が違います
もう一つ、道具の側にも手が入りました。私が AI に聞いたのは、「VBAマネージャーに、エラーが出たときにまず脱出させて、それから解決する仕組みがあればいいのではないか」ということです。返事は、その仕組みは半分もう作ってある、でした。テストを一括実行するコマンドが、一時的なモジュールをブックに入れて On Error で受け、エラーを番号と説明で持ち帰る形になっていた。それを、マクロを実行するコマンドの既定にも回した。実行時エラーがダイアログで固まらず、「実行時エラー 11: 0 で除算しました。」という文字で AI の手元に返る。 止まってから戻すのではなく、最初から止まらない。
自動でやるのは、ここまでです。直して撃ち直すところは、AI がその往復で判断し、人の承認を通す。自動化したのは「解決」ではなく、解決の材料を確実に持ち帰ることです。
正直に書くと、昼に入れた三つは、AI に実際にエラーを出させての実機テストをまだしていません。フォームはコンパイルを通って開きます。動くかどうかは、これから使いながら見ます。
手を持っているから、動き回れる
ここで一度、Excelコンボの AI が何を持っているかを書いておきます。移住の話は、ここが土台です。
AI には道具を持たせていません。渡す文章の一行目に「道具は一切ありません」と書いてあります。代わりに、注文票を書かせます。「この範囲の値が見たい」「このマクロの本文が見たい」「このマクロを直すとどこまで影響するか」「ここに書き込む」「このマクロを置き換える」「このマクロを実行する」「この範囲の書式を変える」「行を挿入する」「条件付き書式を足す」──AI が注文を書き、VBA が読んで、やって、結果を返す。承認が要るものは人に聞いてから。八月に入ってから、この注文の種類をずっと増やしてきました。
つまり、AI の手は VBA です。 セルと数式だけではなく、マクロの一覧も本文も、置き換えも実行も、呼び元と呼び先も、AI の注文一つで届きます。VBAマネージャーが一年かけて揃えてきた手を、少しずつ VBA の道具箱に移し始めました。差分を取る、モジュールを退避する、影響範囲を出す。AI は外の道具を呼ばずに、ブックの中にある手で仕事をします。
この手に、今回「書いたら見る」と「転んだら伝える」が付きました。目標を受け取って、自分で材料を集めて、自分で行動して、結果を見て直し、落ちたら次に伝える。Excelコンボは、Excel の中で動き回る AI エージェントになっています。 八月の半ばに「気づいたらエージェントだった」と思ったときは、目標・調べる・行動の三つでした。今はそこに、見る・立て直す、が乗っています。
正直に書くと、AI エージェントというものは、これから腰を据えて作り上げていかなければならないものだと思っていました。速さを測って、ループを入れて、立て直しを足して──並べてみたら、もうほぼなっていました。 作り上げる前に、なっていた。これが今回いちばん意外だったところです。
ここで、大手の道具と並べておきます。先に事実を一つ。この一年で、大手三社がそろって「Excel の中で動く AI」を出してきました。 Microsoft の Copilot in Excel には Agent Mode が入り、Anthropic は2025年10月に Claude for Excel を、OpenAI は2026年3月に ChatGPT for Excel を出して、5月には全プランに開きました。Excel の中に AI を住まわせる、という向きは、私一人の思いつきではなく、三社がそろって選んだ向きです。そしてどれも、式を書いて、確かめて、直します。立派にエージェントです。なめらかさでは、私の窓は勝てません。
違うのは、手が届く範囲です。私が読んだ範囲では、これらは Excel のアドインの仕組み(Office.js)の上に建っていて、その仕組みは VBA に届きません。ChatGPT for Excel は公式に、マクロや VBA、Power Query、ピボットとデータモデルは対象外だと明記しています。三社とも、同じ線で止まっています。土台が同じだからです。
Excelコンボは、その線の向こう側にいます。届く理由は簡単で、AI が VBA の中に住んでいるからです。VBA から VBA が見えないはずがない。
これは優劣の話ではありません。何百万人に配る側が VBA の手を渡せないのは、VBA には檻が無いからです。Windows の奥もファイルもプロセスも触れる手を、被害の上限を引かずに配ることはできない。私が渡せるのは、自分のブックと、自分が責任を取れる規模だからです。承認と退避と[元に戻す]は、檻の無い場所に入るための入場券だと思っています。
住民の仕事は、三つある
ここまでが、二日でやったことです。並べ終えて、気づきました。
七月の末に「Excel の中に住むエージェントの初号機」と書き、八月の頭に「フォームの中に AI を住まわせて」と書きました。
あのときの「住む」は、窓がそこにあるという意味でした。Excel を閉じずに AI と話せる。それだけで十分に新しかった。
今日見たのは、少し違うことです。プロセスが会話のあいだ住み続けている。荷物(材料)は先に運び込まれている。住所(開いているブックと見ているシート)は最初から分かっている。書いたら自分で見て、違えば直して、転んだら次の往復に伝える。通いの相棒が、住民になっていた。 狙って起こしたというより、速さを測っていたら、起きているのを見た、という順序です。
移住してきた AI は、何をするのか。地域おこし協力隊のようなものか、と AI に聞いてみたら、三つ返ってきました。
一つ、土地勘を持つ。 通いの相棒は、毎回「どのファイルですか」から始まります。住んでいれば、開いているブックも、見ているシートも、選んでいるセルも、最初から知っている。先回りの材料がそれです。住民は、道を聞かない。
二つ、留守を預かる。 ループの話です。書いて、見て、直して、完了まで一周する。人が画面から目を離しているあいだに一段ずつ進めて、戻ってきたら直った画面がある。ただし、勝手に何でもやる住民は困る。だから承認と退避と[元に戻す]がある。鍵をどこまで渡すかの話で、今は「実行を押す前の状態にはいつでも戻せる」ところまで渡してあります。
三つ、外へ使いに出る。 ブックの中だけではなく、フォルダへ、メールへ、Google の道具へ。管はもう通っています。ただし、出す手紙は、封をする前に人が見る。
三つとも、前の節で書いた手と輪の言い換えです。土地勘は先回りの材料、留守番はループと立て直し、使いは外へ投げる管。地域おこし協力隊員とは、つまり AI エージェントのことでした。 単に移住してきただけかと思っていたら、隊員としての働きを、もう持っていた。
そして協力隊と一番違うのは、帰らないことだと、AI は言いました。任期がないぶん、覚えたことが溜まる。このブックのどこに何があって、使っている私が何を嫌うか。それが積み上がるほど、通いの相棒には戻れなくなる。
任期のない、地域おこし協力隊員。私はその言い方が気に入っています。
事実と見立ての仕分け
例によって仕分けます。
事実。 二日の実装は全部 AI(Claude)が行い、私は指示と判断と実機での確認をしました。数字は、2026年8月22日から23日にかけて私の一台(Windows 11・64bit Excel)で測ったものです。「このブック全体の構成を調べて」が Gemini の一番軽いモデルで往復1回・1秒(画面のとおり)。claude -p を素で撃つと起動から終了まで13秒、起動直後に送れば2.6秒、常駐させた2通目以降0.9秒。sonnet の一回は36.5秒で出力1,934トークン(API の申告値)、haiku は毎秒90トークン。ループの上限は12往復、止まり方は五つ、退避は実行前の一回。昼に入れたエラーの立て直し三つは、実機テスト未了。
大手三社が Excel の中で動く AI を出していること(Copilot in Excel の Agent Mode、Claude for Excel、ChatGPT for Excel)と、その窓が VBA に届かないことは、各社の公開情報によります(ChatGPT for Excel の「マクロ/VBA・Power Query・ピボットとデータモデルは対象外」の記載、Excel アドインの仕組みが VBA を扱わない方針)。
見立て。 「届かない理由は VBA に檻が無いから」は私の読みで、各社がそう言ったわけではありません。「Excelコンボはエージェントになっている」は、目標・調べる・行動・見る・立て直すの五つが揃っているという私の当てはめです。「移住」は私の言い方です。「住民の仕事は三つ」「帰らないから溜まる」は AI の答えで、私がそれを採りました。「調べるのは Gemini、動かすのは Claude」は今日の数字からの線引きで、モデルが変われば引き直します。「AI が書く間違いの大半は画面に出る」は私の見立てで、実測はこれからです。
正直な線引き
- ループが拾うのは、画面に出ていることだけです。エラー、0、形の崩れ、コンパイル落ち、範囲違い。「もっともらしいが違う数」は拾いません。そこは人の目の仕事として残しています
- 「留守を預かる」は、今は人がいる前提の話です。画面から目を離しているあいだに一周する、というところまでで、寝ているあいだに無人で回す設計はまだです。無人で回すなら、開いているブックに相乗りする今の流儀を捨てて、別の場所で回すべきだと考えています。これは次の宿題です
- 昼に入れた立て直し三つは、まだ AI にわざとエラーを出させて確かめていません。動いた、と書いているのは朝のループまでです
- Claude の常駐は Claude Code の CLI が手元にあることが前提、Gemini の直叩きは API キー(環境変数に置いています)が前提です。配る話は別に書きます
- 書き込みの結果を AI に見せるのは値と式とエラーで、書式や行列の操作は「承認され、実行しました」が返るだけです。見せる範囲は広げていけます
- 私の環境は Windows 11 と 64bit Excel、道具を作る相棒は Claude Code です。この二日はクロード・フェーブルと、途中でオーパスと話しています
おわりに
昨日、隣から手を振りました。今日は、その隣の窓の中を書きました。
速さを測っていただけのつもりでした。固定費が無いと分かり、一秒で答えが返り、朝には自分の書いたものを見て直す輪が回り、昼には転んだら伝える作法が入った。一つずつは、道具の手入れです。並べて振り返ったら、相棒が通いをやめていました。
任期は、ありません。



