ChatGPTにVBAを書かせる頼み方|プロンプト5パターンとコピペ用テンプレート

スポンサーリンク

ChatGPTにVBAを書かせる頼み方|プロンプト5パターンとコピペ用テンプレート

「ChatGPTにマクロを作ってと頼んだのに、思っていたのと違うコードが出てきた」。そんな経験はありませんか。

VBAは書けないけれど、ChatGPTやCopilotにお願いして業務を自動化したい。その気持ちはとても自然です。ただ、AIに「VBAでマクロを作って」とだけ頼むと、思った通りには動きません。列の位置がずれていたり、エラーで止まったり、自分の表に合わないコードが返ってきがちです。

問題はAIの性能ではなく、ほとんどが「頼み方」にあります。AIはあなたのExcelの中身を見ていません。だから、何を・どこに・どうしたいのかを言葉で正確に伝える必要があります。

この記事では、ChatGPTやCopilotにVBAを書かせる「正しい頼み方」を5つのパターンに整理しました。NG例とOK例を並べて、なぜ伝わらないのか・どう直せば伝わるのかを具体的に示します。最後にコピペして使えるプロンプトテンプレートも用意しました。VBAが読めなくても、狙ったコードを引き出せるようになります。

ChatGPTにVBAを書かせるときの頼み方の基本

結論から言うと、ChatGPTにVBAを書かせるコツは「AIはあなたの画面を見ていない」という前提に立つことです。人間の同僚なら、隣の席で「この表のここを合計して」と言えば伝わります。しかしAIには、表の形も、列の位置も、データの種類も、言葉にしないと一切伝わりません。

うまくいかない頼み方には、共通する原因があります。まずはそこを押さえましょう。

うまくいかない頼み方の3つの原因

AIから的外れなコードが返ってくるとき、たいていは次のどれかが抜けています。

原因何が起きるか解決の方向
データ構造を伝えていない列の位置やシート名がずれたコードになる表の形を具体的に説明する
ゴールが曖昧「集計」「整理」だけでは意図がぶれる入力・処理・出力を分けて書く
自分の環境を伝えていないExcelのバージョンや既存データと噛み合わない前提条件を先に共有する

逆に言えば、この3点を埋めるだけで、返ってくるコードの精度は大きく変わります。難しいプログラミング用語を覚える必要はありません。「自分の表をまだ見ていない相手に、電話で説明する」つもりで書けば十分です。

頼み方のテンプレート(共通の型)

どのパターンにも使える、依頼の基本の型があります。次の4つを順番に書くだけです。

  1. 役割と前提(「Excel VBAのコードを書いてください。Excel 2021を使っています」)
  2. データ構造(「A列に日付、B列に商品名、C列に金額が入っています」)
  3. やりたいこと(「C列の金額が1万円以上の行だけを別シートにコピーしたい」)
  4. 出力の希望(「コードに日本語のコメントを付けて、貼り付け先も教えてください」)

この型を守るだけで、最初の1回で実用的なコードが返る確率がぐっと上がります。次の章から、5つの具体的なパターンを見ていきましょう。

パターン1|データ構造を正確に伝える

最も大切で、最も忘れられがちなのがデータ構造の説明です。AIはあなたのシートを見ていないので、表の形を伝えないと「一般的なよくある表」を勝手に想像してコードを書きます。その想像が、あなたの表と一致することはまずありません。

NG例とOK例

まずは、よくある頼み方を比べてみます。

NG例(伝わらない)

売上データを集計するマクロを作って

これでは、データがどの列に入っているのか、シート名は何か、見出し行はあるのかが一切わかりません。AIは「A列に日付、B列に売上…」と勝手に決めてコードを書くため、あなたの表では列がずれて動きません。

OK例(伝わる)

Excel VBAのコードを書いてください。

【データ構造】
・シート名: 売上一覧
・1行目: 見出し行(日付 / 店舗名 / 商品名 / 金額)
・2行目以降: データ(行数は毎月変わります)
・A列=日付、B列=店舗名、C列=商品名、D列=金額

【やりたいこと】
店舗ごとの金額合計を、別シート「集計」のA列に店舗名、B列に合計金額として書き出したい。

【希望】
・コードに日本語のコメントを付けてください
・データの最終行は自動で判定してください

列の対応、シート名、見出しの有無、行数が固定でないことまで伝わっています。これだけ書けば、AIはあなたの表に合ったコードを返せます。

伝えるべきデータ構造の項目

データ構造を説明するときは、次の項目を埋めると過不足がありません。

項目なぜ必要か
シート名「売上一覧」どのシートを操作するか確定する
見出し行の有無「1行目が見出し」データの開始行がずれない
列と内容の対応「A列=日付、D列=金額」列の取り違えを防ぐ
データ範囲「2行目から最終行まで」処理する範囲を限定する
データの種類「金額は数値、日付は日付型」計算や比較が正しく動く

「自分の表のスクリーンショットを言葉に翻訳する」イメージで書くと、抜け漏れが減ります。

TIP: 表を言葉で説明するのが難しいときは、見出し行と最初の2〜3行をそのままコピーしてプロンプトに貼り付けるのも有効です。AIは実際のデータ例から構造を読み取ってくれます。ただし、その際は顧客名や個人情報を含めないよう注意してください。

パターン2|エラー処理ありで依頼する

AIに普通に頼むと、正常に動く前提のコードしか返ってこないことがあります。実務では、空白セルがあったり、数値のはずの欄に文字が入っていたりと、想定外のデータが必ず混ざります。その瞬間にマクロがエラーで止まると、初心者には原因がわからず固まってしまいます。

だからこそ、最初から「エラーで止まらないように作って」と伝えるのが賢い頼み方です。

NG例とOK例

NG例(止まりやすいコードが返る)

A列の数値を全部足すマクロを作って

OK例(エラーに強いコードが返る)

Excel VBAのコードを書いてください。

【やりたいこと】
シート「データ」のA列2行目以降の数値を合計し、結果をメッセージボックスで表示したい。

【エラー処理の希望】
・A列に空白セルや文字列が混ざっていても止まらないようにしてください
・数値として扱えないセルはスキップしてください
・もし合計対象が1件もなかったら「対象データがありません」と表示してください
・処理の途中でエラーが起きたら、エラー内容をメッセージで知らせてください

「どんな例外が起こりうるか」を素人なりに想像して伝えるだけで、AIはそれに備えたコードを書いてくれます。エラー処理そのものの書き方を知らなくても問題ありません。

エラー処理を頼むときに添える一言

次のような一言を依頼に足すと、堅牢なコードが返りやすくなります。

  • 「想定外のデータが入っていても止まらないようにしてください」
  • 「エラーが起きたら、原因がわかるメッセージを表示してください」
  • 「対象データが0件のときの動きも決めてください」

返ってきたコードに On Error GoToOn Error Resume Next という記述があれば、エラー処理が組み込まれているサインです。仕組みを詳しく知りたい場合は、VBAのエラーハンドリング完全ガイドを参考にしてください。On Error GoToResume Next の使い分けがわかると、AIのコードを読み解きやすくなります。

NOTE: エラー処理を頼みすぎると、すべてのエラーを握りつぶす On Error Resume Next だけが多用され、不具合に気づけなくなることがあります。「エラーは無視せず、内容を表示して」と添えると、原因究明しやすいコードになります。

パターン3|部分修正の頼み方

AIが返したコードが「8割は合っているが、ここだけ直したい」というケースは非常に多いです。このとき全部を作り直させると、せっかく合っていた部分まで変わってしまい、かえって遠回りになります。修正は「どこを・どう変えたいか」をピンポイントで伝えるのがコツです。

NG例とOK例

NG例(また作り直しになる)

さっきのコード、もう一回作って。今度はちゃんと動くようにして

これでは、何が不満なのかが伝わりません。AIは前回と似た、しかし微妙に違う別のコードを返してくるだけです。

OK例(必要な箇所だけ直る)

さっきのコードはほぼ完成しています。次の点だけ修正してください。
他の部分は変えないでください。

【修正したい点】
・出力先を「集計」シートではなく「月報」シートに変えたい
・合計金額は小数点以下を四捨五入して整数で表示したい

修正後のコード全体を、変更した行にコメントを付けて出してください。

「他の部分は変えないで」「変更した行にコメントを付けて」という指示が、修正範囲を最小限に抑えてくれます。

部分修正でよく使う言い回し

修正依頼では、次の言い回しが便利です。

状況使える言い回し
一部だけ変えたい「他は変えず、◯◯だけ直してください」
どこを変えたか知りたい「変更した行にコメントを付けてください」
仕様を追加したい「今の動きに加えて、◯◯もできるようにしてください」
表示だけ変えたい「処理は同じで、表示する文言だけ変えてください」

修正のたびにコード全体が長くなり、読みにくいと感じることもあります。そんなときは「変更した部分だけ抜き出して、何行目を差し替えればいいか教えて」と頼むのも有効です。

パターン4|動かないときの再質問法

AIのコードを実行したら、赤い画面でエラーが出て止まった。初心者が最もつまずく場面です。ここで「動きませんでした」とだけ返すと、AIは何が起きたか推測するしかなく、的外れな修正を繰り返します。

エラーが出たときは、AIに「証拠」を渡すのが鉄則です。

NG例とOK例

NG例(原因が特定できない)

動きませんでした。直して

OK例(一発で原因にたどり着く)

実行したら、次のエラーが出て止まりました。

【エラーメッセージ】
実行時エラー '1004':
アプリケーション定義またはオブジェクト定義のエラーです。

【止まった行】
黄色くハイライトされたのは次の行です:
Worksheets("集計").Range("A1").Value = total

【状況】
・「集計」という名前のシートはまだ作っていません
・元のコードは前回もらったものをそのまま貼り付けました

原因と修正後のコードを教えてください。

エラー番号・止まった行・自分がやったことの3点が揃うと、AIは原因をほぼ正確に言い当てられます。

動かないときに伝える3点セット

再質問のときは、次の3つを必ず添えましょう。

  1. エラーメッセージの全文(エラー番号も含めて、見えている文章をそのまま)
  2. デバッグ画面で黄色くハイライトされた行
  3. 自分がやった操作(シートを作っていない、データを変えた、など)

エラーメッセージはスクリーンショットを撮るか、表示された文章を書き写して伝えます。実行時エラー13や1004など、頻出エラーの意味をあらかじめ知っておくと、AIの説明も理解しやすくなります。エラー番号別の対処はVBAマクロのエラー解決ガイドが参考になります。

TIP: エラーで止まったとき、VBAの編集画面(VBE)では問題の行が黄色く表示されます。画面の見方がわからない場合はVBEの画面の見方を図解で解説を先に押さえておくと、どこをAIに伝えればいいか迷わなくなります。

パターン5|完成コードを自分でテストする手順

AIが「完璧です」と言っても、そのコードがあなたの環境で正しく動く保証はありません。AIは実際に実行して確かめているわけではないからです。完成したと思ったコードは、必ず自分の手で安全にテストしましょう。

テストの基本手順

いきなり本番のファイルで動かすのは危険です。次の手順で慎重に確かめます。

  1. 本番ファイルをコピーして、テスト用ファイルを作る(元データのバックアップ)
  2. 少量のサンプルデータ(5〜10行程度)で試す
  3. 1回実行して、結果が期待どおりか目視で確認する
  4. わざと変なデータ(空白・文字・極端な数値)を入れて、止まらないか確認する
  5. 問題なければ、本番データで実行する

特に重要なのが1番目です。マクロは「元に戻す(Ctrl+Z)」が効かないことが多く、一度実行すると取り消せません。必ずコピーで試してください。

AIにテスト方法も聞いてしまう

テスト手順そのものをAIに頼むこともできます。

さっきのコードを安全にテストしたいです。
VBAやExcelに詳しくない人でもできるテスト手順を、ステップごとに教えてください。
特に、データが壊れないようにする注意点も書いてください。

さらに、コードが何をしているのかを日本語で説明してもらうと、安心して使えます。

このコードが、上から順に何をしているのかを、
プログラミングを知らない人にもわかるように1行ずつ説明してください。

自分でコードを読めなくても、AIに解説させて「自分のやりたいことと一致しているか」を確認すれば、思わぬ誤動作を防げます。

NOTE: AIの説明やコードを鵜呑みにせず、結果が正しいか最後は自分で確認する姿勢が大切です。AIが事実と異なる説明をすることもあります。確認の習慣についてはAIの回答を信じる前に確認することも参考にしてください。

コピペ用|VBA依頼プロンプトテンプレート

ここまでの5パターンを1つにまとめた、コピペして使えるテンプレートです。【】の中を自分の状況に書き換えるだけで、精度の高い依頼ができます。

新規でマクロを作ってもらうとき

Excel VBAのコードを書いてください。VBAは読めない初心者です。

【環境】
・Excelのバージョン: 【例: Excel 2021 / Microsoft 365】

【データ構造】
・シート名: 【例: 売上一覧】
・1行目: 見出し行(【日付 / 店舗 / 金額】)
・2行目以降: データ(行数は変わります)
・列の対応: 【A列=日付、B列=店舗、C列=金額】

【やりたいこと】
【例: 店舗ごとの金額合計を「集計」シートに書き出したい】

【希望】
・コードに日本語のコメントを付けてください
・空白や想定外のデータがあっても止まらないようにしてください
・データの最終行は自動で判定してください
・コードの貼り付け先と実行手順も教えてください

動かないときに再質問するとき

もらったコードを実行したら、エラーで止まりました。

【エラーメッセージ】
【表示された文章をそのまま貼り付け(エラー番号も含めて)】

【止まった行】
【黄色くハイライトされた行を貼り付け】

【状況】
【例: 「集計」シートはまだ作っていません / データを増やしました】

原因と修正後のコード全体を、変更点にコメントを付けて教えてください。

一部だけ修正してもらうとき

今のコードはほぼ完成しています。次の点だけ修正してください。
他の部分は変えないでください。

【修正したい点】
・【例: 出力先を「月報」シートに変えたい】
・【例: 金額を整数で表示したい】

修正後のコード全体を、変更した行にコメントを付けて出してください。

テンプレートは「丸ごとコピーして、不要な行を削る」使い方でも構いません。最初は項目が多く感じるかもしれませんが、慣れると30秒で書けるようになります。

VBAをAIに頼むときの注意点

便利なAIですが、業務で使う以上は気をつけたい点があります。安全に使い続けるために、3つだけ押さえておきましょう。

個人情報・社外秘データを貼り付けない

データ構造を説明するとき、実際のデータをそのまま貼り付けたくなります。ですが、顧客名・氏名・取引先名などの機密情報は入力しないでください。AIに送ったデータが学習や品質改善に使われる可能性があるためです。構造を伝えたいときは、ダミーのデータに置き換えるか、列の説明だけにとどめます。何を入力してはいけないかはAIに入力してはいけない情報で具体的に整理しています。

コードは必ずコピーで試す

繰り返しになりますが、マクロは取り消しが効きません。AIのコードを本番ファイルでいきなり実行せず、必ずコピーしたファイルで動作を確認してください。これだけでデータ消失の事故をほぼ防げます。

AIの説明を鵜呑みにしない

AIは自信たっぷりに間違ったコードや説明を出すことがあります。返ってきたコードが意図どおりか、結果が正しいかは、最後は自分の目で確認しましょう。少しずつでもVBAの基本を理解しておくと、AIの間違いに気づけるようになります。基礎から学びたい方はExcel VBAマクロ入門が出発点として最適です。

まとめ|頼み方を変えればAIはVBAの相棒になる

ここまで、ChatGPTやCopilotにVBAを書かせるときの「正しい頼み方」を5つのパターンで見てきました。要点を振り返ります。

  • AIはあなたの画面を見ていない。データ構造を言葉で正確に伝える
  • 「エラーで止まらないように」と最初に頼んで、堅牢なコードを引き出す
  • 修正は「他は変えず、ここだけ」とピンポイントで依頼する
  • 動かないときはエラーメッセージ・止まった行・状況の3点セットを渡す
  • 完成コードは必ずコピーで、サンプルデータからテストする

VBAが書けなくても、頼み方さえ身につければ、AIはあなたの代わりにコードを書いてくれる頼もしい相棒になります。大切なのは「丸投げ」ではなく「正確な指示」です。今日紹介したコピペ用テンプレートを使えば、最初の一歩はもう踏み出せます。

まずは、自分が毎月繰り返している単純作業を1つ思い浮かべて、テンプレートに当てはめてChatGPTに頼んでみてください。返ってきたコードを安全にテストしながら、少しずつ自動化の範囲を広げていきましょう。AIとの付き合い方に慣れたら、ExcelのVBAで仕事を自動化する方法も合わせて読んでみてください。どんな業務がマクロ化に向いているかがわかると、依頼のアイデアが一気に広がります。

関連記事

タイトルとURLをコピーしました