Excel CopilotでVBAマクロを作るには「生成→解説→実行」の3ステップだけ。チャット欄に「A列が空白の行を削除するマクロを作って」と日本語で頼めばコードが出ます。ただしCopilotは書くだけで、実行は自分で行います。
プログラミング未経験だと「コードが出ても、そこから何をすればいいのか分からない」で止まりがちです。この記事では、どのCopilotを使うか・貼り付け先・セキュリティ警告の解除まで、つまずきやすい順に埋めていきます。
- まず確認|VBA生成に使うのは「Web版・アプリ版Copilot」でOK
- 手順1|Copilotにマクロのコードを生成させる
- 手順2|コードの意味をCopilotに解説させる
- 手順3|VBEに貼り付けて実行する
- 頻出エラーと、Copilotへの聞き方
- 安全に使うための3つの注意点
- まとめ
- よくある質問
- 関連記事
- あわせてチェック
▲ Excel+Copilot サンプル
まず確認|VBA生成に使うのは「Web版・アプリ版Copilot」でOK
「Copilot」と一口に言っても、大きく2種類あります。
- Excel内蔵のCopilotペイン:Microsoft 365 Copilotのライセンスが必要。表の集計や数式提案は得意ですが、VBAコードの出力は苦手で、断られることもあります。
- Web版CopilotやCopilotアプリ(Windows標準搭載):Microsoftアカウントがあれば無料で使え、VBAコードの生成はこちらのほうが確実です。
この記事の手順は無料で使えるWeb版・アプリ版Copilotを前提にしています。有料ライセンスは不要です。Excelの中にCopilotボタンが見当たらなくても、ブラウザでCopilotを開けば同じことができます。
そしてもう一点、どちらのCopilotもコードを書くだけで、シートに自動反映(実行)はしません。動かすのは自分の役目です。ここを先に理解しておくと、以降で戸惑いません。
手順1|Copilotにマクロのコードを生成させる
チャット欄に、やりたい処理をできるだけ具体的に書きます。
指示の良い例・悪い例
- 悪い例:「表を整理するマクロを作って」
- 良い例:「Sheet1のA列が空白の行をすべて削除するVBAマクロを作ってください。1行目は見出しなので残してください」
「どの列・どの条件・どうしたいか」の3点セットがコツです。対象シート名と「見出し行は残して」を添えると、手直しの手間が大きく減ります。
返ってくるコードの例
Sub DeleteBlankRows() '空白行を削除する(1行目は見出しとして残す) Dim ws As Worksheet Dim i As Long Set ws = ThisWorkbook.Worksheets("Sheet1") '対象シートを明示 For i = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row To 2 Step -1 If ws.Cells(i, 1).Value = "" Then ws.Rows(i).Delete End If Next i End Sub
ポイントは2つです。ループの終わりを To 2 にすることで1行目(見出し)が削除対象から外れます(見出しなしの表なら To 1)。また、Copilotは Worksheets(...) を省いた Cells(...) だけのコードを返すことがありますが、それはアクティブシート依存です。別のシートを開いた状態で実行すると、意図しない表が消えます。上の例のようにシート名を明示させるか、実行前に対象シートを開いているか確認してください。
プロシージャ名は日本語でも動きますが、文字化けを避けるため英語名+日本語コメントが安心です。
手順2|コードの意味をCopilotに解説させる
生成されたコードをそのまま実行するのは、正直こわいですよね。実行前にCopilotへ解説を頼むのがおすすめです。
「このコードを1行ずつ初心者向けに解説して」と入力してコードを貼れば、こう噛み砕いてくれます。
For i = ... To 2 Step -1… 下の行から上に向かってループする(削除しても行番号がずれないための工夫)If ws.Cells(i, 1).Value = ""… A列(1列目)が空白かどうかを判定ws.Rows(i).Delete… その行を削除する
意味が分かれば自分で条件を変える応用ができます。B列を対象にしたいなら ws.Cells(i, 1) の 1 を 2 に変えるだけ。コピペで終わらせず少しずつ読めるようになるのが上達の近道です。
手順3|VBEに貼り付けて実行する
- Excelで
Alt + F11を押してVBE(Visual Basic Editor)を開く - メニューの「挿入」→「標準モジュール」を選ぶ
- 開いた真っ白な画面に、コピーしたコードを貼り付ける
F5、または「実行」ボタンを押す
保存時は拡張子を .xlsm(マクロ有効ブック) にします。通常の .xlsx ではマクロが消えます。
保存したファイルを開き直すと、ここで止まる
.xlsm を閉じて開き直すと、「セキュリティの警告 マクロが無効にされました」という黄色いバーが出ます。ここを越えないとマクロは動きません。
- 黄色いバーの「コンテンツの有効化」をクリックする(自分で作ったファイルならこれでOK)
- ネットからダウンロードしたファイルは黄色いバーが出ず、赤い帯で完全にブロックされることがあります。その場合はエクスプローラーでファイルを右クリック→プロパティ→下部の「ブロックの解除」にチェック→OK。開き直すと有効化できます
頻出エラーと、Copilotへの聞き方
| エラーメッセージ | よくある原因 | Copilotへの聞き方 |
|---|---|---|
| マクロが無効にされました | .xlsxで保存した/コンテンツ未有効化/ブロック解除漏れ |
「xlsmを開いてもマクロが無効になります。確認する手順を順番に教えて」 |
| Subまたは Functionが定義されていません | プロシージャ名の打ち間違い、コードの貼り付け漏れ、標準モジュールでない場所に貼った | 「このコードで『Subまたは Functionが定義されていません』が出ます。原因の候補を挙げて」 |
| オブジェクトが必要です | Set の書き忘れ、シート名の指定ミス(存在しないシート名) |
「◯行目で『オブジェクトが必要です』。該当行はこれです(コードを貼る)」 |
| 型が一致しません | 数値セルに文字列を入れた、エラー値を含むセルを比較した | 「型が一致しませんと出ます。エラー値が入ったセルを避ける書き方に直して」 |
| 実行時エラー'1004' | シートの保護、セル範囲の指定ミス、存在しない名前の参照 | 「実行時エラー1004です。保護と範囲指定のどちらが原因か切り分ける方法は?」 |
コツは、エラー番号だけでなく「何をしようとして」「どのコードの何行目で」止まったのかを一緒に伝えること。回答の精度が目に見えて上がります。シート保護が原因なら「校閲」タブから解除する、といった具体策まで返ってきます。
安全に使うための3つの注意点
- 必ずファイルのコピーで試す … マクロによる削除・変更は「元に戻す(Ctrl+Z)」で戻せません。実行した瞬間が取り返しのつかないポイントです。
- コードの中身をざっと確認する …
DeleteClearなど削除・消去系の命令と、対象シートが明示されているかに目を通す習慣を。 - 生成コードが100%正しいとは限らない … あくまで下書き。数行の小さなデータで動作確認してから本番に使いましょう。
まとめ
- 前提:VBA生成は無料のWeb版・アプリ版Copilotで十分。Copilotは書くだけで実行はしない
- 生成:「どの列・どの条件・どうしたいか」+シート名+見出しの扱いを具体的に伝える
- 解説:1行ずつ意味を聞き、実行前に何が起きるか把握する
- 実行:
Alt + F11→ 挿入 → 標準モジュール →F5。保存は.xlsm、開き直したら「コンテンツの有効化」 - 修正:エラーメッセージ+止まった行をそのまま貼って直してもらう
- 鉄則:必ずコピーしたファイルで試す。マクロの操作はCtrl+Zで戻せない
まずはコピーしたファイルで、空白行の削除のような簡単なマクロから試してみてください。慣れてきたら、Copilotに関数(数式)を作らせる使い方にも挑戦すると、Excel作業がさらに快適になります。
よくある質問
無料版のCopilotでもVBAマクロは作れる?
作れます。Microsoftアカウントで使えるWeb版CopilotやWindows標準のCopilotアプリでVBAコードを生成でき、Microsoft 365 Copilotの有料ライセンスは不要です。むしろExcel内蔵のCopilotペインはVBA出力を苦手としており、コード生成目的ならWeb版・アプリ版のほうが確実です。生成したコードを自分でVBEに貼り付けて実行する流れは、有料版でも同じです。
会社のPCでマクロがブロックされて動かない場合は?
企業ではグループポリシーでマクロを一律無効化していることがあり、その場合は「コンテンツの有効化」ボタン自体が表示されません。個人設定で解除しようとせず、情報システム部門に「業務でVBAマクロを使いたい」と申請するのが正しい手順です。信頼できる場所(トラステッドロケーション)としてフォルダを登録してもらう運用が一般的なので、保存先フォルダも一緒に相談しましょう。
Copilotが生成したコードを業務で使っていい?
社内ルールの確認が前提です。多くの企業で生成AIの業務利用にガイドラインがあり、チャットに社内データを貼る行為が制限されている場合があります。コード生成であっても、実データやシート名・顧客名などを含めずに依頼するのが無難です。また生成コードの動作責任は使う側にあるため、レビューとテストを経てから業務フローに組み込んでください。
Copilotが生成したコードをそのまま実行しても大丈夫?
避けてください。生成コードは下書きで、100%正しいとは限りません。実行前に「1行ずつ初心者向けに解説して」と頼んで内容を確認し、Delete や Clear などの削除系命令、シート指定の有無をチェックしましょう。試すときは必ず本番ファイルのコピーで。マクロによる変更はCtrl+Zで元に戻せないためです。
※本記事の手順はMicrosoft 365版Excel(2026年8月時点)で確認しています。
関連記事
- Excelで特定の曜日を除いて日数を足す方法|水曜定休もWORKDAY.INTLで一発
- Excelで「5営業日後」を出す方法|WORKDAY関数で土日祝スキップ
- Excel×Claude×Power Automateで日次レポートを全自動化|5アクションで組む手順とハマりどころ5つ
- Excel LAMBDA・LET関数の作り方|Claudeに設計を頼めば自作関数はすぐ完成する
- Excelのセルに =CLAUDE_ASK と書くだけ|xlwingsでAIを表計算に組み込む