結論:
ChatGPTにVBAを書かせて仕事を自動化したいなら、「依頼フォーマット(テンプレ)」を1つ決めて、それをコピペして使い回すのが最適解です。
この記事では、VBAがまったくわからない人でも使えるように、そのまま貼り付けて使える依頼テンプレと、自動化に繋げる具体例をまとめます。
1. 前提:VBAがわからなくても、自動化はできる
この記事の想定読者は次のような人です。
- VBAの基礎が何もわからない
- コードは自分で書けない
- でも、ChatGPTとVBAを使って「毎日の作業を自動化したい」
- ChatGPTにどう頼めば「ちゃんと動くコード」が返ってくるのか分からない
結論から言うと、VBAの文法を全部理解していなくても、ChatGPTに渡す情報(フォーマット)さえ整っていれば、自動化は十分可能です。
2. なぜフォーマットがないと「まともなVBA」が返ってこないのか
フォーマットがないと、依頼内容がこうなりやすいです。
- 「マクロで自動化したいのでコードを書いてください」
- 「この表をいい感じにまとめるマクロください」
この状態だとChatGPTには、次の情報が足りません。
- どのシートを使うのか
- 何列目に何の項目が入っているか
- どの行からどの行までがデータなのか
- 結果をどこに出したいのか
情報が足りないので、ChatGPT側が勝手に想像して補います。
その結果、
- 自分のファイルでは動かない
- 想定していないセルが処理される
- 仕事でそのまま使えない
という「微妙なコード」になりがちです。
人間のプログラマに仕事を頼むつもりで、仕様を書いて渡す。
その「仕様」の形を、依頼フォーマットとして固定してしまうのが一番効率的です。
3. ChatGPTにVBAを書かせるための基本フォーマット
まず、どんなVBAでも使える汎用テンプレを用意します。
以下をコピーして、自分用に保存しておきます。
【依頼内容】
Excelの作業を自動化するVBAコードを作成してください。
【目的】
(例)売上データの一覧から、「商品A」の行だけを別シートに抽出したい。
【前提環境】
・Excelのバージョン:Microsoft 365(日本語版)
・シート構成:
- シート名「元データ」:A列〜F列にデータが入っている
- シート名「結果」:結果を出力するシート(なければ自動で作成してほしい)
・データ構造:
A列:日付
B列:伝票番号
C列:商品名
D列:数量
E列:単価
F列:金額
・元データは2行目からデータが入っており、1行目は見出し行になっている。
【やりたい処理の流れ】
1. シート「結果」が存在しない場合は作成する。
2. シート「結果」の内容を毎回クリアする。
3. シート「元データ」の2行目から最終行までループする。
4. C列(商品名)が「商品A」の行だけを抽出対象とする。
5. 条件に合った行を、「結果」シートに1行ずつコピーする。
6. 1行目に見出しをコピーする。
【入力データの例】
(ここに、元データの例を2〜3行分書く)
【出力結果のイメージ】
(ここに、結果シートがどうなっていてほしいかを2〜3行分書く)
【コードに関する希望】
・Option Explicit を使ってください。
・変数名は中身が分かる名前にしてください(例:lastRow, srcRow, dstRow)。
・主要な処理には日本語コメントを書いてください。
・標準モジュールに記述する Sub プロシージャとして作成してください。
・そのままコピペで動く完全なコードを提示してください。
【出力形式】
最初に処理内容の説明を1〜2行、その後にVBAコードを提示してください。
やることはシンプルで、
- 「目的」
- 「前提環境」
- 「やりたい処理の流れ」
の3つを、自分の作業に合わせて書き換えるだけです。
4. 自動化を意識した具体例①:不要な行を削除してファイルを軽くする
自動化の最初の一歩として多いのが、条件に合う行を一括削除するマクロです。
- 金額が0の行を全部消したい
- 摘要が空白の行を全部消したい
- 手でフィルタして削除するのが面倒
こういう作業をChatGPTに依頼するときのフォーマット例です。
【依頼内容】
Excel VBAで、条件に合う行をまとめて削除するマクロを書いてください。
【目的】
帳票データの一覧から、「金額が0の行」と「摘要が空白の行」を一括削除して、ファイルを軽くしたい。
【前提環境】
・Excel:Microsoft 365 日本語版
・対象シート名:「元データ」
・データ範囲:
- 1行目:見出し
- 2行目以降:データ
- A列〜F列まで使用
・判定に使う列:
- E列:金額(数値、0なら削除対象)
- F列:摘要(空白なら削除対象)
【やりたい処理の流れ】
1. シート「元データ」を対象とする。
2. 最終行を取得する。
3. 行削除は「下から上へ」ループして行う。
4. 以下のいずれかを満たす行を削除する。
- 金額(E列)が0
- 摘要(F列)が空白
5. 削除した行数を MsgBox で表示する。
【コードに関する希望】
・Option Explicit を使ってください。
・主要な処理に日本語コメントを入れてください。
・標準モジュールに記述する Sub プロシージャ1つにまとめてください。
・そのままコピペで実行できる完成したコードを出力してください。
【出力形式】
最初に処理内容の要約を1〜2行、その後にVBAコードを提示してください。
このレベルまで具体的に書くと、ChatGPTは「想像で補う部分」がほとんどなくなり、実ファイルでそのまま使えるコードを出しやすくなります。
5. 自動化を意識した具体例②:毎月の定型レポートを自動で作る
自動化の効果が大きいのは、毎月・毎週のルーティン作業です。
例えば:
- 毎月1回、「当月のデータだけ」を別シートにコピーしてレポートを作っている
- シート名を「2025-10」「2025-11」のように変えている
こういう作業も、フォーマット化して依頼できます。
【依頼内容】
毎月のレポート作成を自動化するExcel VBAを作成してください。
【目的】
元データの中から、指定した年月のデータだけを別シートにコピーして、
毎月のレポートシートを自動で作成したい。
【前提環境】
・Excel:Microsoft 365 日本語版
・シート構成:
- 「元データ」:売上データが全期間分入っている
・元データの構造:
A列:日付(シリアル値または yyyy/mm/dd 形式)
B列:顧客名
C列:商品名
D列:数量
E列:金額
・1行目は見出し行、2行目からデータ。
【やりたい処理の流れ】
1. ユーザーに InputBox で「対象年月」(例:2025/10)を入力させる。
2. 入力された年月をもとに、新しいシートを「2025-10レポート」のような名前で作成する。
3. 元データの2行目から最終行までループし、日付が指定年月と同じ行だけを抽出する。
4. 抽出した行を新しいレポートシートにコピーする。
5. 1行目に見出し行をコピーする。
6. 抽出件数を MsgBox で表示する。
【コードに関する希望】
・Option Explicit を使ってください。
・日付の判定ロジックは、Year関数・Month関数を使ってください。
・レポートシートがすでに存在する場合は、作り直すか上書きするようにしてください。
・主要な処理に日本語コメントを入れてください。
・そのままコピペで動く完全なコードを出力してください。
【出力形式】
最初に処理内容の説明を1〜2行、その後にVBAコードを提示してください。
このように、毎月繰り返している手作業を1つ選び、フォーマットに当てはめていくだけで、自動化のネタになります。
6. エラーが出たときにChatGPTへ修正を依頼するフォーマット
一度で完璧なコードになるとは限りません。
そのときのために、エラー報告用テンプレも決めておきます。
【状況】
先ほど作成してもらったVBAコードを実行したところ、エラーが出ました。
このコードを修正してください。
【エラー内容】
・エラーメッセージ:'9: インデックスが有効範囲にありません。'
・エラーが発生した行:(該当行をそのままコピペ)
【実行環境】
・Excel:Microsoft 365 日本語版
・ブックの状況:
- シート「元データ」は存在する
- シート「結果」はまだ手動で作成していない
【実際のシート構成の補足】
・元データは A1〜F5000 まで入っている。
・1行目は見出し行。
【修正の希望】
・なぜそのエラーが出たのか原因を説明してください。
・エラーが出ないようにコード全体を修正してください。
・存在しないシートが原因の場合は、コード側で自動でシートを作成する処理を入れてください。
【出力形式】
1. エラー原因の説明
2. 修正後の完全なVBAコード
の順で出力してください。
これを使うことで、
- 原因の説明
- 修正版のコード
をセットで返してもらいやすくなります。
7. 「自動化」を進めるための実践ステップ
フォーマットができたら、やることはシンプルです。
- 今の仕事で、毎回同じようにやっている作業を3つ書き出す
- 例:不要行の削除、集計用シートへのコピー、毎月のレポート作成
- その中から1つだけ選び、この記事のフォーマットに当てはめてChatGPTに依頼する
- もらったVBAを実際のファイルで試し、足りないところは「エラー報告テンプレ」で修正依頼する
- 動くようになったら、そのマクロを毎日・毎週実行する運用にして、手作業を減らす
この流れを繰り返すことで、
- ChatGPTへの依頼文作成
- VBAコードの生成
- 自動化タスクの積み上げ
が、ほぼパターン化できます。
8. まとめ:フォーマットを決めること自体が「自動化」になる
この記事で解決したかった悩みは次の3つです。
- 完璧なVBAコードをChatGPTに依頼したいが、フォーマットがない
- ChatGPTから適切なVBAの答えを返してほしい
- VBAとChatGPTを使って、自動化を進めたい
そのためにやることは、次の1つです。
依頼フォーマットを決めて、毎回それを使い回す。
フォーマットを決めてしまえば、
- 「どう聞けばいいか」を考える時間が減る
- 情報が揃うので、ChatGPTの出力の品質が安定する
- 結果的に、VBAとChatGPTを使った自動化のスピードが上がる
VBAの文法を完璧に理解していなくても、
依頼フォーマットさえ整えておけば、ChatGPTを「自動化エンジン」として十分に活用できます。

コメント