エクセル迷子案内所
← 学習記事一覧

AIでExcelマクロを作る方法|VBAが書けなくても動く実例3つ【ChatGPT/Copilot対応】

公開: 2026-06-29
執筆: FMaker(エクセル迷子案内所 運営者)対応を想定: Microsoft 365 / Excel 2021最終事実確認: 2026-06-29

📌 まず結論(30秒で読めます)

コードが書けなくても、AIに ① 何を ② どのデータが・どこに ③ 結果はどうなってほしい の3点を伝えればExcelマクロは作れます。

ただし、生成されたコードはそのまま信じず、使う前に3点だけ確認するのが安全です(対象範囲は自動取得か/削除などの破壊的操作は無いか/実在しない命令は無いか)。

いますぐ試すなら、AIにこう頼んでみてください👇

「Windows版Excelで、『1月』『2月』『3月』シートのA〜D列のデータを、見出し1回だけで『集計』シートに縦に連結するVBAマクロを書いて。最終行は自動で取得して。」

「毎月の集計を自動化したいが、VBAは書けない」「ChatGPTにマクロを作ってもらったが、どこに貼ればいいか分からない」「作ってもらったマクロを実行していいのか不安」——こうした"あと一歩"でつまずく方に向けた記事です。

💡 関連記事:


AIにExcelマクロを書いてもらうという選択肢

VBAを 学ぶ ことと、AIに 書いてもらう ことは別の話です。本記事は後者、「自分で書けなくても、AIに頼んで動くマクロを手に入れる」方法に絞ります。

ただし、AIは もっともらしく見えて実は動かないコード を書くことがあります。そのまま丸ごと信用せず、人間側が3点だけ確認すれば安全に使える という前提で進めます。この記事で手に入るのは次の4つです。

  • AIに失敗なく頼む プロンプトの型(3要素)
  • コピペで動く実例3つ(シート統合・色付け・レポート整形)
  • 出てきたコードを 動かす手順(貼り付け先・保存形式)
  • 安全に使うチェック(3点検証)

3つのAIサービスの違い(どれを使うか)

マクロを書いてもらえる代表的なAIは3つです。どれを使っても、本記事のプロンプトと検証手順はそのまま使えます。

サービス料金(執筆時点)コードの貼り付け先Excel特化の知識
ChatGPT無料プランあり/有料の場合あり自分でVBAエディタへ貼る汎用(前提は自分で伝える)
Microsoft Copilot(Web版 copilot.microsoft.com)無料プランあり/有料の場合あり自分でVBAエディタへ貼る汎用
本サイトのAI案内人無料・登録不要自分でVBAエディタへ貼るExcel特化

⚠️ 「Microsoft Copilot」には複数の形態があります

「Excelを開くと画面にCopilotボタンがある」という説明を見かけますが、Excelに組み込まれたCopilotは2026年現在、すべての個人ユーザーに提供されているわけではありません(Microsoft 365の対象プラン+別ライセンスなどの条件があります)。手元のExcelにCopilotボタンが無くても異常ではありません。本記事は、無料でも使える Web版のCopilot(copilot.microsoft.com) にコードを書いてもらう前提で進めます。

料金やプランは変更が頻繁なので具体額には触れません。3つに優劣はなく 用途が違うだけ で、まずは無料で試せるものから始めれば十分です。なお本サイトのAI案内人はExcel特化なので、バージョンやOSといった前提を毎回書かずに済むのが利点です。


失敗しないプロンプトの3要素

AIにマクロを頼むとき、次の3要素を必ず入れると、的外れなコードが返りにくくなります。

  • ① 何を:処理の目的を1文で(例「複数シートを1枚にまとめたい」)
  • ② どのデータが・どこに:シート名・範囲・列の意味(例「『1月』〜『3月』のA〜D列、1行目は見出し」)
  • ③ 結果はどうなってほしい:出力先・形式・条件(例「『集計』シートに見出し1回だけで縦に連結」)

伝え方でコードの質は大きく変わります。

悪い例

Excelのマクロを作って。シートをまとめたい。

良い例

①「1月」「2月」「3月」の3シートを1枚にまとめたい。②各シートはA〜D列で1行目が見出し。③新しい「集計」シートに見出し1回だけで縦に連結。最終行は自動取得で。Windows版Excelです。

悪い例ではシート名も列構成も分からず、当てずっぽうのコードになります。②③まで書くと、そのまま動くコードが返りやすくなります。

📌 ポイント: サンプルデータを2〜3行貼ると精度が一気に上がります。 言葉で説明するより、実際の値を数行見せたほうがAIは構造を正しくつかみます。最初に環境(Windows/Mac、.xlsm で保存する前提)を伝えるのも効果的です。

この3要素を全部やってくれる「おまかせ起動プロンプト」

VBAが書けなくても、下のプロンプトをそのままコピーしてChatGPT・Copilot(または本サイトのAI案内人)に貼れば、AIが必要な情報を1つずつ質問しながら確認してからコードまで書いてくれます。

あなたはExcelマクロ(VBA)作成のアシスタントです。私はVBAを書けない初心者です。
いきなりコードを書かず、次の順番で進めてください。

【ステップ1:足りない情報を、1つずつ質問する】
私がこのあと「やりたいこと」を一言で書きます。
作るのに情報が足りなければ、まとめてではなく "1つずつ" やさしい言葉で質問してください。
特に次を確認してください:
・どのシートの・どの範囲か(1行目は見出しか)/各列が何のデータか
・結果をどこに・どんな形で出したいか
・Windows か Mac か(保存は .xlsm 前提でよいか)
・絶対に消したくない・変えたくないデータはあるか
※「実際のデータを2〜3行そのまま貼ってください」と私に促してください(その方が正確になります)。

【ステップ2:コードを書く前に、理解を確認する】
情報がそろったら、コードを書く前に「やること」を日本語の箇条書きで要約してください。
私がサンプルを貼っていれば、その数行が "処理後にどうなるか" を表で見せてください。
そして「この理解で合っていますか?」と私に聞いてください。違っていたら直してください。

【ステップ3:OKが出てからコードを書く】
私が「OK」と言ってから、VBAコードを書いてください。コードには必ず:
・先頭に Option Explicit
・各行に日本語のコメント
・データを消す/上書きする処理があれば、先頭に「※実行前にブックのコピーを取ってください」
を入れてください。

【ステップ4:最後に安全チェックを一緒に】
コードができたら、私が確認できるように「①対象範囲は正しいか ②消す/上書きの操作が含まれていないか ③見慣れない命令はないか」の3点を一緒に点検してください。

------ ここから下に、あなたのやりたいことを一言で書いてください ------
(例:毎月の「1月」「2月」「3月」シートを「集計」に縦にまとめたい)

実例1:複数シートを1枚に統合する

「1月」「2月」「3月」に同じ列構成のデータがあり、「集計」シートに縦連結したい(見出しは1回だけ)ケースです。各月のシートは、たとえば次の形です。

「1月」シートの様子。1行目の見出しは左から 日付・商品・数量・金額。2〜4行目に 2026/1/10 りんご 10 3000 などのデータが並び、商品名は左寄せ(文字列)、数量と金額は右寄せ(数値)で表示されている

AIには次のように頼みます。

Windows版Excelです。「1月」「2月」「3月」の3シートに、A〜D列(A:日付、B:商品、C:数量、D:金額)のデータがあり、各シートの1行目は見出しです。これらを新しい「集計」シートに縦に連結してください。見出しは1回だけにして、最終行・最終列は固定せず自動で取得し、Selectは使わずに書いてください。

返ってきたコードがこちらです。

Option Explicit

Sub シートを集計に統合する()
    Dim names As Variant, sh As Worksheet, dst As Worksheet
    Dim i As Long, lastRow As Long, lastCol As Long
    Dim startRow As Long, writeRow As Long

    names = Array("1月", "2月", "3月")   ' 統合したいシート名(自分の名前に書き換える)

    ' 「集計」シートが無ければ作り、あれば中身を消してから入れ直す
    On Error Resume Next
    Set dst = Worksheets("集計")
    On Error GoTo 0
    If dst Is Nothing Then
        Set dst = Worksheets.Add(After:=Worksheets(Worksheets.Count))
        dst.Name = "集計"
    Else
        dst.Cells.Clear   ' 既存の中身を消す(事前にバックアップ推奨)
    End If

    writeRow = 1
    For i = LBound(names) To UBound(names)
        Set sh = Worksheets(names(i))
        lastRow = sh.Cells(sh.Rows.Count, 1).End(xlUp).Row        ' 最終行を自動取得
        lastCol = sh.Cells(1, sh.Columns.Count).End(xlToLeft).Column
        startRow = IIf(i = LBound(names), 1, 2)   ' 1枚目は見出し込み、2枚目以降は2行目から
        If lastRow >= startRow Then
            sh.Range(sh.Cells(startRow, 1), sh.Cells(lastRow, lastCol)).Copy dst.Cells(writeRow, 1)
            writeRow = writeRow + (lastRow - startRow + 1)
        End If
    Next i

    MsgBox "集計シートに統合しました。", vbInformation
End Sub

実行すると、「集計」シートに3シート分が縦に並び、見出しは先頭の1回だけになります。

統合後の「集計」シート。見出し(日付・商品・数量・金額)は1行目に1回だけあり、その下に1月・2月・3月の3シート分のデータが縦に連結されている。2〜4行目が1月、5〜6行目が2月、7〜8行目が3月のデータで、商品名は左寄せ、数量・金額は右寄せ

📌 ポイント: シート名や列構成が違うときは、コードを直すより プロンプトの②を書き直して もう一度頼むのが簡単です。統合後に合計が合わないときは、数値が 文字列扱い(左寄せ・緑の三角)のことがあります → 数式が計算されない・=SUMがそのまま表示される


実例2:条件に合う行に色を付ける

「一覧」シートで、A列「ステータス」が「未対応」の行を黄色く塗りたいケースです。AIには次のように頼みます。

Windows版Excelです。「一覧」シートのA列が「ステータス」で1行目は見出しです。A列が「未対応」の行のデータ範囲(A列〜最終列)を黄色の背景で塗ってください。条件付き書式ではなくVBAで塗り、実行のたびに前回の色が残らないよう最初に塗りつぶしを解除し、最終行は自動取得、Selectは使わないでください。

返ってきたコードがこちらです。

Option Explicit

Sub 未対応の行を黄色く塗る()
    Dim ws As Worksheet
    Dim lastRow As Long, lastCol As Long, i As Long

    Set ws = Worksheets("一覧")   ' 対象シート(自分の名前に書き換える)

    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row        ' 最終行を自動取得
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

    ' いったん既存の塗りつぶしを解除(前回の色を残さない)
    ws.Range(ws.Cells(2, 1), ws.Cells(lastRow, lastCol)).Interior.ColorIndex = xlNone

    ' 2行目から最終行まで判定し、A列が「未対応」ならその行を黄色で塗る
    For i = 2 To lastRow
        If ws.Cells(i, 1).Value = "未対応" Then
            ws.Range(ws.Cells(i, 1), ws.Cells(i, lastCol)).Interior.Color = RGB(255, 255, 0)
        End If
    Next i
End Sub

実行すると、A列が「未対応」の行だけが黄色く塗られます。

「一覧」シート。A列「ステータス」が「未対応」の2行目(山田商事)と4行目(佐藤物産)が、行のデータ範囲(A〜C列)ごと黄色の背景で塗られている。完了・対応中の行は塗られていない

RGB(255, 255, 0) は赤と緑を最大・青をゼロにした色で、黄色になります。

📌 ポイント: 同じ「色を付ける」でも 条件付き書式 で足りる場合があります。条件付き書式は条件が変われば色も自動で変わりますが、VBAで塗った色は 固定 され、Ctrl + Z で戻せないことも多いので、最初は試し塗りで確認しましょう。


実例3:定型レポートの整形(列幅・見出し色・罫線)

生データのシートを、「列幅の自動調整 → 見出しを太字+背景色 → データ範囲に罫線」まで一気に整える例です。AIには次のように頼みます。

Windows版Excelです。「レポート」シートは1行目が見出し、2行目以降がデータで、行数・列数は毎回変わります。(1) 全列の幅を自動調整、(2) 見出し行を太字にして薄い青の背景色、(3) 見出しを含むデータ範囲に格子の罫線、をまとめて行うマクロにしてください。最終行・最終列は自動取得、Selectは使わないでください。

返ってきたコードがこちらです。

Option Explicit

Sub レポートを整形する()
    Dim ws As Worksheet
    Dim lastRow As Long, lastCol As Long
    Dim dataRange As Range

    Set ws = Worksheets("レポート")   ' 対象シート

    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row        ' 最終行を自動取得
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

    ws.Columns.AutoFit   ' (1) 全列の幅をデータに合わせて自動調整

    ' (2) 見出し行(1行目)を太字にして薄い青の背景色を付ける
    With ws.Range(ws.Cells(1, 1), ws.Cells(1, lastCol))
        .Font.Bold = True
        .Interior.Color = RGB(221, 235, 247)
    End With

    ' (3) 見出しを含むデータ範囲全体に格子の罫線を引く
    Set dataRange = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol))
    dataRange.Borders.LineStyle = xlContinuous   ' 実線
    dataRange.Borders.Weight = xlThin            ' 細線
End Sub

dataRange.Borders のように罫線のまとまり全体に指定すると、外枠だけでなく内側の格子線も一度に引けます。

実例1〜3のどれにも Cells(Rows.Count, 1).End(xlUp).Row の最終行取得が出てきました。AIに頼むときも「最終行を自動で取得して」と一言添えると、A1:A100 のような固定行のべた書きを避けられ、データが増えても崩れないマクロになります。


AIが書いたコードを動かす手順

AIが書いたコードは、次の手順でExcelに取り込みます。

  1. Excelを開いた状態で Alt + F11 を押す → VBAエディタ(Visual Basic Editor)が開きます
  2. 左のツリーで対象ブックを選び、メニュー 「挿入」→「標準モジュール」
  3. 開いた空のコードウィンドウに、コードを そのまま貼り付け
  4. F5 で実行(または [開発]タブ →「マクロ」→ 対象を選んで「実行」)
  5. 動いたら 必ず .xlsm(マクロ有効ブック)で保存.xlsx で保存するとマクロは消えます

📌 ポイント: 貼り付け先は 「標準モジュール」が基本 です。「Sheet1」直下や「ThisWorkbook」に貼ると、意図と違う動きをしたり、マクロ一覧(Alt + F8)に出てこなかったりします。

Mac版Excelも考え方は同じです。Option + F11 を押すか、[開発]タブの [Visual Basic] ボタンから VBAエディタを開けます。「[開発]タブが無い」「.xlsm で保存できない」「実行時に赤いエラーが出る」場合は、環境・設定側のことが多いので Excelマクロが動かない・エラーが出るとき で確認してください。


AIのコードを「そのまま信じない」3つの検証ポイント

本記事のいちばん大事なところです。AIのコードは 3点だけ目視で確認 すれば、VBAが書けなくても安全に使えます。

① 対象範囲が想定どおりか

固定の行番号(例 A1:A100)でべた書きされていないかを見ます。Cells(Rows.Count, 1).End(xlUp).Row のように 最終行を自動取得 していれば、データが増減しても範囲がズレません。

② 破壊的な操作が混じっていないか

Delete(削除)・Clear / ClearContents(消去)・RemoveDuplicates(重複削除)など、データを消す・上書きする キーワードが無いかを探します。あれば、本当にその範囲だけが対象かを確認します。

③ 実在しないメソッド・プロパティが無いか

AIは、もっともらしい 嘘の命令(存在しないメソッド等)を書くことがあります。これは実行すると途中で止まるので、コピーしたシートで一度試す だけで安全に見つけられます。

実務手順は次の3ステップです。

  1. 元のブックをコピー してから貼り付け・実行する
  2. 少量データ(10行程度)で先に試す
  3. 止まったら、エラーメッセージをそのままAIに返して直してもらう(対話で直す)

この3つは、いずれも VBAが書けなくてもできる ことです。安全に使える境目は「書けるか」ではなく「確認できるか」です。


安全に使うための注意

マクロを日常的に使うなら、次の3つを習慣にすると安心です。

  1. 元のブックを必ずコピーしてから実行。マクロでの変更は Ctrl + Z で戻せないことが多い です
  2. 出どころ不明のマクロは実行前にコードを読む。自分がAIに頼んだコードなら出どころはAI自身なので、前章の3点を目視確認すれば十分です
  3. .xlsm で保存し、ファイル名でマクロ入りと分かるように しておく

⚠️ 注意: 業務用PCでは、そもそもマクロの実行が止められていることがあります。 セキュリティポリシーで無効化されている場合は、設定を勝手に変えず管理部門に確認してください。


うまく動かないときは

AIに作ってもらったマクロが動かないときは、症状で対処が分かれます。

  • 実行できない/ボタンが無い/警告バーが出る → 環境・設定の問題。[開発]タブの表示やマクロの有効化を macro-not-working の記事 で確認
  • 赤いエラーダイアログが出て止まる → コードか対象の問題。番号と日本語メッセージを読み、同記事 の「実行時エラー」を参照
  • エラーは出ないのに結果が変 → 範囲ズレや文字列の数字が原因。同記事 の「結果がおかしい」を参照

AIならではのコツとして、赤いエラーダイアログが出たら、番号と日本語メッセージを丸ごとコピーしてそのままAIに貼り直す と、原因を踏まえた修正版が返ってきます。それでも解決しないときは、本サイトのAI案内人(Excel特化)に コードとエラーを丸ごと貼って 相談してください。前提を毎回書かずに切り分けられます。


よくある質問

Q. AIが書いたマクロを、そのまま実行して大丈夫ですか?

A. いったん止まって、検証3点(対象範囲・破壊的操作・実在しない命令)を目視確認し、元ブックをコピーしてから 試してください。最初から本番ファイルで動かすのは避けましょう。

Q. ChatGPT・Microsoft Copilot・本サイトのAI案内人、どれが一番いいですか?

A. 優劣ではなく 用途の違い です。本記事のプロンプトと検証手順はどれでも共通して使えます。Excel特有の前提を毎回書きたくなければExcel特化の本サイトのAI案内人が楽、という程度の違いです。

Q. AIが書いたコードが動かなかったら?

A. まずエラーメッセージをそのままAIに返して直してもらいます。それでも直らなければ Excelマクロが動かない・エラーが出るとき で症状別に切り分けてください。

Q. AIが「ExcelにCopilotボタンがある前提」で説明しますが、自分のExcelには無いです

A. Excelに組み込まれたCopilotは すべてのユーザーに提供されているわけではありません。手元に無くても異常ではなく、Web版Copilot(copilot.microsoft.com)やChatGPTで同じことができます。

Q. Macでも同じですか?

A. プロンプトの書き方・検証の考え方は共通で、VBAエディタもMacで使えます。ただしAIはWindows前提で答えがちなので、最初に「Mac版のExcel」と伝えるのが効果的です。

Q. AIに頼めば、もうVBAを学ばなくていいですか?

A. 目的次第です。動くマクロを手に入れる のが目的なら本記事の方法で十分です。自分で書けるようになりたい なら、体系的に学べる書籍やスクールが向きます。


まとめ:AIにマクロを作ってもらう全体フロー

全体の流れは次のとおりです。

最後に、3つの型を1枚にまとめます。あとから戻って確認するときに使ってください。

中身
プロンプト3要素① 何を ② どのデータが・どこに ③ 結果はどうなってほしい
検証3点① 範囲は自動取得か ② 破壊的操作は無いか ③ 実在しない命令は無いか
安全3点① 元ブックをコピー ② 出どころ・中身を確認 ③ .xlsm で保存

AIは「何でも自動化してくれる魔法のマシン」ではありません。ですが 頼み方の型確認の型 さえ持てば、VBAが書けなくても実用的なマクロを手に入れられます。まずは小さな1つから試してみてください。

体系的に学びたい人へ

PR

AIに頼むだけでなく、マクロを体系的に身につけたい人へ。累計50万部・ChatGPTやCopilot活用にも対応した最新版です。

たった1秒で仕事が片づく Excel自動化の教科書【改訂第3版】

※ 当サイトはアフィリエイトプログラムを利用しており、上記リンク経由の購入で運営者が報酬を得ることがあります。

関連記事

それでも解決しないときは

記事の手順を試しても直らない場合、特定の構成だけで起きるレアケースかもしれません。対話で原因を1つずつ切り分けるのが最短です。

AI案内人に相談する(無料・登録不要)→