「ChatGPTにExcelマクロを作ってもらったのに、貼り付けて実行したらエラーが出る……」。こんな経験、ありませんか?
2026年現在、ChatGPTやCopilot、Claude、GeminiなどのAIチャットに「VBAマクロを書いて」と頼む人が急増しています。プログラミング未経験でもコードが手に入るのは革命的ですが、AIが生成したVBAコードは「そのままコピペで動く」とは限らないのが現実です。
この記事では、AIが作ったExcel VBAマクロでエラーが出るよくある原因5つと、エラーを減らすための正しいプロンプト(指示文)の書き方を解説します。VBAの知識がゼロでも大丈夫。つまずきポイントを押さえれば、AIは最強のExcel助手になってくれます。
そもそもなぜAIが書いたVBAコードでエラーが出るの?
AIチャットは「一般的なExcelの知識」をもとにコードを生成しますが、あなたのExcelファイルの中身は知りません。シート名、データの範囲、Excelのバージョン、セキュリティ設定……こうした「あなたの環境だけの情報」が抜けたまま汎用的なコードを出すので、自分のファイルに貼ると動かないことが多いのです。
ざっくり言うと、AIは「レシピ」は書けるけど、あなたの冷蔵庫の中身を知らない料理人みたいなもの。材料(=データ)の情報をちゃんと伝えないと、完成する料理(=マクロ)がうまくいかないわけです。
原因1:シート名が違う(実行時エラー '9')
最も多いトラブルがこれ。AIが生成したコードの中に Sheets("Sheet1") や Sheets("データ") と書かれていても、あなたのExcelのシート名が「売上一覧」や「2026年4月」だったら一致しません。
Excelは「インデックスが有効範囲にありません」(実行時エラー '9')を出して止まります。
対処法:
- VBAエディター(Alt + F11で開く)でコード内のシート名を検索し、自分のシート名に書き換える
- 最初からプロンプトで「シート名は『売上一覧』です」と伝える
原因2:データ範囲・列番号がズレている
AIは「A列に名前、B列に金額が入っている」と仮定してコードを書くことがあります。でも実際のファイルではA列が日付でC列が金額だったら? 当然、意図しない動きになります。
たとえば Range("A1:B100") と書かれていても、あなたのデータが200行あったら途中までしか処理されません。
対処法:
- プロンプトで「A列:日付、B列:商品名、C列:金額、D列:担当者、データは2行目から最終行まで」のように列構成を具体的に書く
- 行数が可変なら「最終行まで自動で処理してほしい」と伝える
原因3:マクロが有効になっていない・開発タブが表示されない
VBAコードを貼り付ける場所(VBAエディター)にたどり着けない人も多いです。Excelの初期設定では「開発」タブが非表示になっていて、マクロのセキュリティ設定も「無効」になっている場合があります。
2026年4月現在、Microsoft公式ヘルプによれば、Microsoft 365ではインターネットからダウンロードしたファイルのマクロがデフォルトでブロックされる仕様になっています。
対処法:
- 開発タブを表示:「ファイル」→「オプション」→「リボンのユーザー設定」→ 右側の「開発」にチェックを入れる
- VBAエディターを開く:「開発」タブ →「Visual Basic」をクリック(ショートカット:
Alt + F11) - コードを貼り付ける:「挿入」→「標準モジュール」で新しいモジュールを追加し、AIが生成したコードを貼り付け
- マクロを実行:「開発」タブ →「マクロ」→ 実行したいマクロ名を選んで「実行」
セキュリティ警告が出た場合は「コンテンツの有効化」をクリックしてください。ただし、信頼できないファイルのマクロは絶対に有効化しないこと。自分で作ったマクロだけにしましょう。
原因4:参照設定が足りない・バージョン差異
AIが生成したコードが CreateObject("Scripting.FileSystemObject") や ADODB.Connection などの外部ライブラリを使っている場合、そのライブラリが自分のExcelで有効になっていないとエラーになります。
また、Microsoft 365(サブスクリプション版)と買い切り版のExcel 2019/2021では使える関数やオブジェクトに差があります。AIは「最新のExcel」を前提にコードを書くことが多いので、古いバージョンだと動かないケースがあるのです。
対処法:
- エラーメッセージに「ユーザー定義型は定義されていません」と出たら、VBAエディターの「ツール」→「参照設定」で必要なライブラリにチェックを入れる
- プロンプトで「Excel 2019を使っています」「参照設定の追加はできません」などの制約を伝える
- 外部ライブラリを使わず
CreateObject(遅延バインディング)で書いてもらうよう指示する
原因5:AIが「存在しないメソッド」を書く(ハルシネーション)
AIは、実際には存在しないVBAのメソッドやプロパティを「でっち上げる」ことがあります。これをハルシネーション(幻覚)と呼びます。
たとえば Range.AutoSort のような、VBAに存在しないメソッドをさも当然のように書いてくることがあるのです。実行すると「オブジェクトはこのプロパティまたはメソッドをサポートしていません」(実行時エラー '438')になります。
対処法:
- エラーが出たら、黄色くハイライトされた行を確認し、そのメソッド名をGoogle検索して本当に存在するか調べる
- エラーメッセージをそのままChatGPTに貼り付けて「このエラーが出ました。修正してください」と依頼する
- 一度で完璧なコードが出なくても、2〜3回のやり取りで修正してもらう前提で使うのがコツ
エラーを激減させる「正しいプロンプト」の書き方
ここまでの原因を踏まえると、最初のプロンプト(指示文)の書き方でエラーの8割は防げます。以下の5項目を必ず含めましょう。
1. Excelのバージョンを書く
「Microsoft 365を使っています」「Excel 2021(買い切り版)です」など。
2. シート構成を具体的に書く
「シート名は『受注データ』です。A列:受注日、B列:顧客名、C列:商品名、D列:数量、E列:金額。ヘッダーは1行目、データは2行目から」のように。
3. やりたいことを手順で書く
「D列の数量が0の行を削除して、E列の金額の合計をF1セルに出力したい」のように、処理のステップを順番に書くのがポイント。「いい感じにまとめて」は絶対NG。
4. 制約条件を明示する
「参照設定の追加はできない」「ファイルパスは C:\Users\taro\Documents\売上.xlsx」「他のブックは開かない前提で」など。
5. 出力形式を指定する
「Sub プロシージャとして書いてください」「コード全体をコピペできる形で出力してください」「コメント(日本語)を各行に入れてください」と伝えると、そのまま使いやすいコードが返ってきます。
プロンプト例
たとえば、こんな風に書くとエラーが出にくいコードが返ってきます。
Excel Microsoft 365(Windows版)で動くVBAマクロを書いてください。
■シート:「売上台帳」(A列:日付、B列:店舗名、C列:売上金額、1行目はヘッダー、データは2行目から最終行まで)
■やりたいこと:C列の売上金額が10,000円未満の行を削除し、残った行の売上金額の合計をD1セルに出力する
■制約:参照設定の追加は不可。外部ライブラリは使わないでください
■出力形式:Subプロシージャで、各行に日本語コメントを付けてください
エラーが出たときの「AIへの聞き方」
コードを実行してエラーが出たら、以下の3つの情報をセットでAIに伝えましょう。
- エラーメッセージ:「実行時エラー '9': インデックスが有効範囲にありません」など、表示されたメッセージをそのままコピー
- エラーが出た行:VBAエディターで黄色くハイライトされている行をコピー
- コード全体:部分的に貼るのではなく、Subから End Subまで全部を貼る
この3点をセットで渡せば、AIはかなりの精度で修正コードを返してくれます。「動きません」だけ伝えるのはNGです。
また、実行前に必ずファイルを保存(Ctrl + S)しておくのも大事。マクロの誤動作でデータが書き換わっても、保存前の状態に戻せます。
FAQ
VBAをまったく知らなくてもChatGPTでマクロは作れる?
作れます。ただし「シート名」「列構成」「やりたいこと」を具体的に伝えるスキルは必要です。コードの中身を理解しなくても、この記事で紹介した5項目をプロンプトに含めれば、動くコードが返ってくる確率はかなり高くなります。
ChatGPT以外のAI(Claude・Gemini・Copilot)でもVBAは作れる?
はい。2026年4月時点で、Claude、Gemini、Microsoft CopilotでもVBAコードの生成は可能です。とくにMicrosoft Copilot(Excel内蔵版)はExcelのデータに直接アクセスできるため、シート名や列構成の指定が不要になるケースもあります。
会社のパソコンでAIが使えないけどVBAマクロは作りたい。どうすればいい?
業務PCでAIチャットがブロックされている場合、私用スマホでChatGPTにプロンプトを送り、生成されたコードを手入力またはメールで転送する方法があります。ただし、会社の機密データ(顧客名・売上額など)をAIに入力するのは情報漏洩リスクがあるため、必ず会社のセキュリティポリシーを確認してください。
マクロを含むExcelファイル(.xlsm)を他の人に送っても動く?
相手のExcelでマクロが有効になっていれば動きます。ただし、2022年以降のMicrosoft 365では、インターネットやメール経由で受け取ったファイルのマクロがデフォルトでブロックされます。相手にはファイルのプロパティから「ブロックの解除」をしてもらう必要があります。
AIが生成したVBAコードにウイルスが含まれることはある?
ChatGPTやClaude、Geminiなどの主要AIサービスが意図的にマルウェアを生成する可能性は極めて低いです。ただし、コードが意図せずファイルを削除・上書きする処理を含んでいることはあり得ます。実行前に必ずファイルのバックアップを取り、コード内に Kill や DeleteFile がないか確認しましょう。
参考文献
- Microsoft 365 ファイルでマクロを有効または無効にする — Microsoft サポート
- Excel のマクロのセキュリティ設定を変更する — Microsoft サポート
- ExcelVBAのコード生成をするchatGPTのプロンプトのコツ — Qiita
- チャットGPTのVBA作成がエラーだらけです — Yahoo!知恵袋






