0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VBE を開かずにマクロを直す ── AIチャットとボタン2個で済む話

0
Posted at

はじめに

連載のタイトルは「Excel VBA × Claude Code」ですが、今回は Claude Code がほとんど出てきません。

必要なのは、ブラウザで動く無料の AI チャットと、Excel のフォームに付けたボタン2個。それだけです。

TL;DR

  • マクロの簡単な修正は「AI チャットにコードを貼り、直ったコードを貼り戻す」のが実は速い
  • そのコピペの往復を、Excel のフォームのボタン2個(複写・置換)にした
  • VBE は開かない。新しいマクロも貼るだけで増える。失敗したら復元で戻す
  • 簡単な修正なら、これだけでいい

1.png

前回までのあらすじ

前回、自作の VBA 管理ツールが遅くなった犯人を、108本の会話ログから立件しました。

そこで分かったことの一つが、修正にかかる時間の支配役は、道具の処理速度ではなく「コードをどれだけ打ち直すか」だということでした。何百行のツールを経由しようが、素のコピペだろうが、結局はコードを読む量と書く量で時間が決まります。

この基準で身の回りを見回すと、意外なものが速い側にいました。

素の AI チャットです。

AI チャットのコピペは、実は速い

コードをチャットに貼って「ここを直して」と頼み、返ってきたコードを貼り戻す。原始的に見えるこの方法、余計なものが一切乗っていません。診断もしない、環境も作らない、ただ読んで、直したコードを出す。それだけです。

API もアドインも MCP も要りません。ブラウザの無料チャットで足ります。

では何が面倒なのか。コピペそのものです。

  • VBE を開く
  • どのモジュールにあるか探す
  • Sub の頭から End Sub まで慎重に範囲選択してコピー
  • 返ってきたコードで元のコードを慎重に選択して貼り替え

直す時間より、この往復の手作業のほうが長い。ならば、ここを Excel 側で消せばいい。

ボタンを2個付けた

私のアドイン(秀.xlsm)には、ブックの中のマクロを一覧に並べて選んで実行できるフォームがあります。そこにボタンを2個足しました。[複写][置換] です。

01.png

使い方はこうなります。

  1. 一覧でマクロを選んで [複写] ── コードの全文がクリップボードに入ります
  2. AI チャットに貼って「ここを直して」と頼む
  3. 返ってきたコードをコピーして [置換] ── マクロが差し替わります

以上です。VBE は一度も開きません。範囲選択もしません。どのモジュールにあるかも知らなくていい(複写は全モジュールを横断して探します)。

修正が失敗だったら [復元] で置換前のコードに戻せます。

このボタン一式は、個人用マクロブック(PERSONAL.XLSB)のマクロ一覧フォームにも同じものを付けました。マクロがどのブックに住んでいても、直し方は同じです。

置換ボタンの中身

貼るだけと言っても、モジュールを壊されては困るので、中にはいくつか仕掛けがあります。

名前で判定する。 貼られたコードの Sub / Function 名を読み取り、同じ名前のマクロがあればそれを丸ごと置き換えます。「どのマクロを直すか」はコード自身が知っている、という考え方です。

体裁を検査する。 クリップボードの中身が Sub / Function の形をしていなければ、何もせずに止まります。間違えて別の文章をコピーしたまま押しても、モジュールは無事です。

コードフェンスは自動で外す。 AI チャットの返答は、コードが ``` で囲まれた形になっていることが多いです。返答を説明文ごと丸ごとコピーしても、コードブロックの中身だけを拾って貼ります。コピーの丁寧さすら要らなくなりました。

置換前のコードは退避する。 置き換えの直前に元のコードをメモリに逃がしておき、[復元] ボタンで1回だけ書き戻せます(Excel を閉じると消える、割り切った仕様です)。

新しいマクロは、貼るだけで増える

同じ名前のマクロが見つからなかった場合、[置換] は追加として動きます。一覧で選択中のマクロのすぐ後ろに、新しいマクロとして挿し込まれます。

ここで、秀.xlsm の昔からの仕組みが効いてきます。このアドインは「標準モジュールに Sub を置くだけでメニューに並ぶ」作りです。つまり、AI に「こういうマクロが欲しい」と書いてもらい、返ってきたコードを [置換] で貼ると、その瞬間にメニューに新しいマクロが並んで、選んで実行できるということです。

修正だけでなく、作るほうも「貼るだけ」になりました。

VBE を開かない、ということ

VBA の開発環境がつらい、という話は昔からあります。世の中の解決策はおおむね「もっと良い開発環境に出る」方向です。以前の記事でも紹介したハルミさんの xlflowVBA用の言語サーバー は、VS Code で VBA をちゃんとしたソフトウェアとして書けるようにする傑作で、チーム開発ならそちらが本筋だと思います。

今回のは逆向きで、開発環境そのものを不要にする方向です。コードを書く場所は AI チャット側に移り、Excel 側は「選んで押すだけ」の場所になる。使う人から見える画面は、いつもの Excel と、いつものマクロ一覧のフォームだけです。

AI が主役として前に出てくるのではなく、Excel のサポート役として裏に回る。この形が、私には一番しっくりきています。

どこまでこれで済むのか

正直に線を引いておきます。

複数のマクロにまたがる改修、フォームの作り直し、シートの中身まで含めた検分──ああいう「ブック全体を見てもらいたい」仕事は、これでは足りません。私はそちらを Claude Code と自作ツール(vba_manager)でやっています。連載でずっと書いてきたのはそちらの話です。

ただ、日々のマクロいじりの大半は「1個のマクロを直す」「1個作って足す」です。そこではこのボタン2個が最短でした。

簡単な修正なら、これだけでいい。

入手

秀.xlsm は GitHub に公開しています。

仕掛け自体は小さなものなので、ご自分のブックのフォームに同じ考え方でボタンを付けることもできると思います。中身のコードはブックの中にそのまま入っています。

次回予告

ボタンを押すと AI チャットが返してくれる──ここまで来ると、次の欲が出ます。コピペの運び役をしているのは、まだ人間だからです。

手元には Claude Code の CLI があります。VBA からこれを呼べたら、運び役も消えます。ボタンを押すと、AI が直したコードがそのまま挿さる。構想は膨らんでいますが、現物ができてから書きます。

──と、ここまで書いたのが数日前です。我慢できずに、この記事を公開する前の晩、小さな実験をしました。詳しくは次回書きますが、ひとつだけ。

VBA から AI を呼んで、直ったコードが返ってくるまで、実測6秒でした。

仕組みが通ることは、もう確かめてあります。次回は少し大きな発表になるかもしれません。

3.png

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?