VBAのコード生成にClaude Codeを使うようになりました。「こんな処理をするマクロを作って」と伝えるだけでコードが生成される、便利な時代になったものです。私の場合は、このサイトで紹介している「VAコード」を使うことで、生成されたファイルをVBEへ一括インポートできるようにしています。
VAコードを使った開発ループと問題点
VAコードを使うと、Claude CodeでのVBA開発は次のようなループになります。
- VAコードでVBAプロジェクトの全モジュールをフォルダにエクスポート
- Claude Codeがそのフォルダ内の
.bas/.clsファイルを直接編集してコードを生成・修正 - VAコードで編集後のファイルをVBEへインポートし、実際のExcel/Wordファイルに反映
- エクセル/ワード上で動作確認
- エラーが出たら、その内容をClaude Codeに伝えて修正を依頼し、2に戻る
このループの5のところで問題となるのが、「エラーの内容をどうやってClaude Codeに伝えるか」ということです。
スクリーンショットしかないと思い込んでいました
私は、エラーの内容を生成AIなどに伝えるためには、エラーダイアログの内容をキーボードで打ち込むか、スクリーンショットで撮るしかないと思い込んでいました(エラーダイアログ内のテキストは選択できないからです)。
ところが先日参加した「ゆるい勉強会@26初夏」で、ある参加者の方から、実に簡単な方法を教えてもらうことができました。
エラーダイアログが出ている状態で「Ctrl+C」
やり方はこうです。
- VBAの実行時エラーでメッセージボックスが表示された状態のまま、Ctrl+Cを押す
- Claudeのチャット欄でCtrl+Vを押す
たったこれだけで、メッセージボックスの内容(エラー番号とメッセージ文言)がテキストとしてチャット欄に貼り付けられます。テキストを打ち込んだり、スクリーンショットを撮ったりする必要はありません。


なぜこれで通るのか
この機能はVBA固有のものではなく、Windows標準のメッセージボックスが昔から持っている仕様のようです。ダイアログにフォーカスがある状態でCtrl+Cを押すと、タイトル・メッセージ本文・ボタン構成などがテキストとしてクリップボードにコピーされます。VBAの実行時エラーダイアログ(およびMsgBox関数)もこのWindows標準の仕組みを使っているため、そのまま適用できるというわけです。
VBAを何年も使ってきましたが、この基本機能をまったく知りませんでした。ネットで検索してもなかなか出てこない情報ですし、ClaudeやGeminiに聞いてみても知らなかったようです。
実際の使い方
というわけで、現時点で私が採用しているエラー発生時の手順は以下のとおりです。
- エラーダイアログが表示されたら、Ctrl+Cでそのままコピー
- Claude Codeのチャット欄にCtrl+Vで貼り付ける
- あとはClaudeが必要な情報を質問してくるので、それに答える
- Claude Codeが修正したファイルを、VAコードで再度VBEへインポートして再実行
ただし、Ctrl+Cで取得できるエラー文言は、「症状」を伝える手段であって、「発生箇所」や「原因」までを伝えるものではありません。足りない情報は、Claudeから質問されるはずですので、それに答える必要があります。
このCtrl+Cの技を教えてくださった「ゆるい勉強会@26初夏」の参加者の方に、この場を借りて感謝申し上げます。


コメント