Chatgpt×Excel活用方法 ChatGPT活用術 マクロ作成

ChatGPTにVBAコードを正確に書かせる方法|実務レベルのマクロを安定生成するプロンプト設計術

Excel業務を自動化するうえでVBAは欠かせない存在ですが、初心者にとっては構文の暗記やロジック設計が大きな壁になります。さらに中級者以上でも、複雑な条件分岐や例外処理を正確に書くには時間がかかり、コピー&ペーストではミスが起きやすいのが現実です。

その課題を大きく解決してくれるのがChatGPTです。自然な日本語で依頼するだけで、正確で実務に耐えられるVBAコードを生成してくれます。ただし、ChatGPTは“依頼された内容を正確に再現する仕様上” 、プロンプト(指示文)が曖昧だと誤解や省略が起き、意図しない動作になることもあります。

そこでこの記事では、ChatGPTに正確で安定したVBAコードを書かせる方法を、実務例や理由を交えて詳しく解説します。ChatGPTを「頼れる相棒」として使うためのプロンプト設計術を身につければ、誰でも最短で高品質なマクロを作成できます。

✅ ChatGPTでVBAコード精度が上がるプロンプトの基本原則

・ChatGPTは「曖昧な日本語」をそのまま解釈してしまう

ChatGPTは便利な一方で、依頼が曖昧だと次のような問題が起こります。

  • 変数名の意図を誤解される
  • ループ対象が正しく指定されない
  • 想定しないファイルやシートを操作してしまう
  • 不完全な例外処理になる

これらはすべて「プロンプトの曖昧さ」が原因です。逆に、条件を具体的に伝えればChatGPTは“驚くほど正確に”VBAを生成してくれます。

・正確なVBAを作らせる三大要素

ChatGPTで高精度のコードを作るには、次の3点を必ず伝えます。

  1. 対象(どのシート/どのセル/どのファイル)
  2. ルール(どんな条件で処理し、どう変換するか)
  3. 例外(あったらどうする/なかったらどうする)

例外条件を伝えるだけで、ChatGPTは実務的なエラー回避コードを追加してくれます。


✅ ChatGPTに正確なVBAを書かせるための依頼文テンプレート

・最も安定するプロンプトの構造

目的:◯◯を自動化するVBAを作成したい

対象:
・使用するブック:◯◯
・対象のシート:◯◯
・対象範囲:◯◯

処理内容:
1. 〜〜を実行
2. 条件に一致した場合のみ◯◯
3. 該当行が見つからなければメッセージを表示

条件:
・空白セルはスキップ
・数値以外が入っている場合は除外

例外処理:
・シートが存在しない場合は自動作成
・エラー発生時は対象セル番地をメッセージで表示

その他:
・コードはSubプロシージャで作成
・コメントを必ず入れてください

この構造で依頼すると、ChatGPTは**“必要な情報が揃っている”と判断して精度の高いVBAを返します。**

・曖昧なプロンプトの例と改善例

❌曖昧な例:
「シートを並べ替えるマクロを作ってください」

→ ChatGPTは以下が判断できません:

  • 昇順か降順か
  • 対象は全シートか一部シートか
  • 非表示シートを含むのか
  • 固定シートの扱い
  • エラー発生時の挙動

✔改善例:
「シート名を昇順で並べ替えてください。ただし“設定”という名前のシートが存在する場合は先頭に固定し、非表示シートは並べ替え対象に含めないでください。」

これだけでChatGPTは正確なロジックを生成します。


✅ ChatGPTが誤回答しやすいポイントと防ぎ方

・その1:対象シートやセルの指定が曖昧

例:「A列を読み取るマクロ」とだけ指示すると、アクティブシートを対象にしてしまいます。

改善:
「シート名“Data”のA列を対象にしてください」

・その2:フォルダパスの扱いが不明確

VBAでよく起きる問題がパスの誤解釈です。

C:\Data

C:\Data\

どちらを使うべきか判断できないため、必ず指定します。

・その3:複数条件の優先順位が曖昧

「空白と0は除外し、それ以外を集計してください」といった依頼は順序が曖昧です。

ChatGPTへの依頼例:

最初に空白セルを除外し、その後に数値が0の行を除外してください。

これだけでChatGPTは正確に分岐処理を組みます。

参考:【VBA】If文の複数条件をリストで判定する方法|効率的な条件分岐の書き方と応用




✅ ChatGPTでVBAを正確に書かせるためのテスト依頼術

生成されたコードはそのままテストする…
のではなく、ChatGPTに“テストシナリオ”まで作らせると精度が跳ね上がります。

・テストシナリオ作成依頼例

「このVBAが正しく動くか確認したいので、テストケースを10個作成してください。」

ChatGPTは次のようなシナリオを出してくれます。

  • 対象セルが空白の場合
  • 数値と文字列が混在する場合
  • シートが存在しない場合
  • すでにファイルが存在する場合

この「抜けチェック」が非常に優秀で、実務の事故を防げます。

参考:【VBA】AutoFilterの複数条件を設定する方法|AND・ORを自在に操る実務向け活用術


✅ ChatGPTに“修正版”を的確に書かせる方法

・エラー内容をそのまま貼る

「実行時エラー9:インデックスが有効範囲にありません」

これだけ伝えてもChatGPTは修正できますが、状況を詳しく伝えるとさらに精度が上がります。

例:

このコードの5行目で、実行時エラー9が発生しています。
対象シート名“Data”は存在しているのにエラーになります。
原因と修正コードを提示してください。

ChatGPTはエラー原因の推測と修正版の両方を提示してくれます。


✅ ChatGPTに複雑なVBAを書かせるときの高度テクニック

・ChatGPTに“ロジック図解”を作らせる

「この処理のフローチャートを作ってください」

→ ChatGPTは視覚的な処理順を出してくれます。

これを確認すると、意図と違う処理が無いか発見しやすくなります。

・ChatGPTに“関数分割”を指定する

複雑な処理を一つのSubに書かせるとバグが出やすいです。

依頼例:

処理を3つのSubに分けてください。
1. 初期設定
2. データ抽出
3. 結果出力

→ ChatGPTは自然な関数構造を作ってくれます。

・ChatGPTに“コメントを必須化”させる

コメントなしコードは保守性が低いので必ず次を付けます。

「各行にコメントを入れてください」

これだけで可読性が一気に向上します。


✅ ChatGPTが作ったVBAを実務で安全に使うための注意点

・OneDrive/SharePoint環境は必ず補足する

クラウド同期環境ではファイル名変更や保存処理が不安定になることがあります。依頼時に追加します。

例:「対象ファイルはOneDrive上にあります」

・パスワード保護シートは明記する

ChatGPTは保護解除を自動で書く場合があるため注意が必要です。

例:「保護解除は不要です。そのまま読み取り専用で処理してください」

・大量データ処理では“高速化”指示が必須

高速化のために以下を入れてください。
・ScreenUpdating=False
・Calculation=xlManual

ChatGPTはこれを適切な位置に入れてくれます。


✅ まとめ:ChatGPTにVBAコードを正確に書かせるためのプロンプト設計が最重要

最後に記事内容を整理します。

  • ChatGPTは曖昧な指示だと誤ったVBAを生成しやすい
  • 正確に書かせるには「対象・ルール・例外」を明確化する
  • プロンプトテンプレートを使うと高精度なVBAが得られる
  • テストシナリオ作成を依頼すれば安全性が高まる
  • エラーはChatGPTに詳細を共有すれば修正コードをすぐ生成してくれる
  • 複雑なマクロは“関数分割”・“コメント必須化”を指定すると保守性が向上する
  • OneDriveや保護シートなど実務環境も事前に伝えることが重要

ChatGPTを正しく使えば、VBA初心者でも“実務レベルの高品質マクロ”を安定して作成できます。今日からぜひ、プロンプト設計を意識して、あなたの業務に最適化されたVBAコードをChatGPTに書かせてみてください。

    -Chatgpt×Excel活用方法, ChatGPT活用術, マクロ作成