ChatGPTにVBAコードを依頼するためのテンプレフォーマット

仕事の自動化(事務作業)

結論:
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. 「自動化」を進めるための実践ステップ

フォーマットができたら、やることはシンプルです。

  1. 今の仕事で、毎回同じようにやっている作業を3つ書き出す
    • 例:不要行の削除、集計用シートへのコピー、毎月のレポート作成
  2. その中から1つだけ選び、この記事のフォーマットに当てはめてChatGPTに依頼する
  3. もらったVBAを実際のファイルで試し、足りないところは「エラー報告テンプレ」で修正依頼する
  4. 動くようになったら、そのマクロを毎日・毎週実行する運用にして、手作業を減らす

この流れを繰り返すことで、

  • ChatGPTへの依頼文作成
  • VBAコードの生成
  • 自動化タスクの積み上げ

が、ほぼパターン化できます。


8. まとめ:フォーマットを決めること自体が「自動化」になる

この記事で解決したかった悩みは次の3つです。

  • 完璧なVBAコードをChatGPTに依頼したいが、フォーマットがない
  • ChatGPTから適切なVBAの答えを返してほしい
  • VBAとChatGPTを使って、自動化を進めたい

そのためにやることは、次の1つです。

依頼フォーマットを決めて、毎回それを使い回す。

フォーマットを決めてしまえば、

  • 「どう聞けばいいか」を考える時間が減る
  • 情報が揃うので、ChatGPTの出力の品質が安定する
  • 結果的に、VBAとChatGPTを使った自動化のスピードが上がる

VBAの文法を完璧に理解していなくても、
依頼フォーマットさえ整えておけば、ChatGPTを「自動化エンジン」として十分に活用できます。

コメント

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