はじめに
「前任者が作ったExcelマクロ、誰も直し方がわからない…」
「VBAって何?コードを見ても何が書いてあるかさっぱり…」
あなたの職場にも、そんな 誰も触れないExcelファイルが眠っていませんか?
私の職場でも、まったく同じ状況がありました。
銀行の入金データを基幹システムに取り込むために使っていたExcelマクロ。
入試制度の変更で改修が必要になったのですが、部署内にVBAを触ったことのある職員は一人もおらず、
コードがどこにあるかすら分からない。コードを開いても、何が書いてあるか意味不明。
…そんな状態でした。
しかし結論から言うと、VBAの知識が全くないまま、AIを使ってマクロの解読と修正に成功しました。
この記事では、私が実際にやった「AIを使ってExcelマクロを直す3ステップ」を、
プロンプト例・AI回答・エラー対応まで含めて丸ごと公開します。
「自分には無理」と思っていた方にこそ、読んでいただきたい内容です。
この記事でわかること
- ✅ VBAコードがどこにあるかの探し方
- ✅ AIにコードの意味を解説してもらう方法
- ✅ 修正内容をAIに指示してコードを書き直してもらう方法
- ✅ エラーが出たときのAIへの聞き方
- ✅ 実際に使ったプロンプト例(コピぺして使えます)
当ブログは現役大学職員の私が、AIツール(Gemini, ChatGPTなど)を活用し、事務業務改善をするためのAI活用ブログです。私自身、文系大学卒の非エンジニアの事務職員なので、専門用語は避けて読者の皆さんが分かりやすく、すぐ使える情報をお届けできるよう心がけています。
プロフィールの詳細は、以下をご覧ください。
ExcelのVBAマクロとは?AIで修正できる理由(1分でわかる基礎知識)
Excelマクロとは、繰り返し行う操作をボタン一つで自動実行できる機能です。
データの整理・集計・出力など、毎回手作業でやっている処理を自動化できます。
このマクロを動かす「命令書」がVBA(Visual Basic for Applications)と呼ばれるコードです。
プログラミング言語の一種ですが、私たちがゼロから書く必要はありません。
今回の目的は「すでに書かれているコードを読んで、修正する」こと。そこにAIを活用します。
VBAマクロのAI修正が必要な状況とは
- 作成者が退職・異動して、マクロの仕様を誰も知らない
- 引き継ぎメモや仕様書が残っていない
- コードを見ても何が書いてあるかわからない
- 業務フローが変わったが、マクロを修正できる人がいない
- 入試制度変更・システム移行などで既存マクロの改修が必要になった
こうした「ブラックボックス化したExcelマクロ」は、放置するほどリスクが高まります。
手作業に戻せば時間もミスも増える。かといって外注すれば費用もかかる。
AIを使えば、このループから抜け出せます。
AIでExcelマクロを解読・修正する3ステップ
専門知識がなくても、以下の3ステップでマクロの修正は可能です。
| ステップ | やること |
|---|---|
| ① 現状把握 | コードの場所を探し、AIに意味を解説してもらう |
| ② 対話形式で修正 | 変えたい内容をAIに伝え、修正コードを出力してもらう |
| ③ テスト・エラー対応 | 実際に動かし、エラーが出たらAIに解決してもらう |
VBEの開き方など、Excelの基本操作はこちらの記事で詳しく解説しています。

ステップ1:VBAコードの場所を特定してAIに解読させる方法
動かなくなったマクロの復旧や、仕様変更による改修作業も、このステップから始めましょう。まず「コードがどこにあるか」「何をしているコードなのか」をAIに確認します。
使うAIはGemini、ChatGPT、CopilotChat、Claudeなど何でもOKです。
職場や大学で契約しているものを使いましょう。
VBAコードの場所を特定する
コードがどこにあるか分からなければ、まずAIに聞いてしまいましょう。
▼ プロンプト例(コピーして使えます)
Excelマクロについて、VBAコードはどこにありますか?
開き方を初心者向けに簡潔に教えてください。
- Excelマクロについて、VBAコードはどこにありますか?開き方を教えて。
簡潔に初心者向けに回答してください。 -
Excelマクロの本体であるVBAコードは、Excelに標準搭載されている「VBE(Visual Basic Editor)」という専用の画面の中にあります。
初心者の方でも一番簡単に開ける手順は以下の通りです。
・VBAコード画面の開き方
1. Excelファイルを開く
2. キーボードの Alt キーを押しながら F11 キー を押す
これだけで、Excelとは別の新しいウィンドウ(VBE)が立ち上がります。・コードの場所を確認する
→画面左側にある「プロジェクトエクスプローラー」内のフォルダ(「標準モジュール」など)をダブルクリックすると、右側の白い画面にコードが表示されます。
・「開発」タブを表示させる方法
→今後よく使う場合は、リボンメニューに専用のタブを出しておくと便利です。
1. リボンのどこでも良いので右クリックし、[リボンのユーザー設定] を選択。
2. 右側のリストにある [開発] にチェックを入れて [OK] を押す。
3. 表示された [開発] タブ の一番左にある [Visual Basic] をクリックすれば、いつでもVBEが開けます。
もし、特定のボタンに登録されたコードを見たい場合は、そのボタンを右クリックして「マクロの登録」→「編集」を押すと直接コード画面へ飛ぶことができます。次に、実際に簡単なマクロを書いて動かしてみる方法を解説しましょうか?

VBAコードの意味をAIに解説してもらう
VBEを開いてコードが表示されたら、全文をコピーしてAIのチャット画面に貼り付け、こう聞きます。
▼ プロンプト例
このVBAコードの意味と役割を、初心者向けにわかりやすく解説してください。
(ここにコードを貼り付ける)
- このVBAコードを理解し、意味と役割を初心者向けに分かりやすく解説して。
(ここにコピーしたコードを貼り付け) -
ご提示いただいたVBAコードは、「外部のCSVファイルから学生データを読み込み、その中から『経済学科』の学生だけを選んで、別のシートにきれいに並べて保存する」という一連の作業を自動化するものです。
初心者の方にも分かりやすいよう、処理の流れを5つのステップに分けて解説します。
このコードがやっていること(全体の流れ)
このマクロは大きく分けて以下の手順で動いています。
- 準備:「経済」という名前のシートがあるか確認し、中身をリセットする。
- ファイル選択:読み込みたいCSVファイルをユーザーに選ばせる。
- 一時的な読み込み:新しいシートを一時的に作り、そこにCSVの中身をすべて書き出す。
- 抽出とコピー:一時シートを上から順に見て、「経済学科」の人だけを「経済」シートにコピーする。
- 仕上げ:学籍番号順に並べ替え、使い終わった一時シートを消して完了。
各セクションの詳しい解説
1. 出力先シートの準備
Set wsDest = ThisWorkbook.Worksheets("経済") ... wsDest.Cells.Clear wsDest.Range("A1:B1").Value = Array("学籍番号", "学生氏名")- 役割: データを書き込む「経済」シートを探します。
- ポイント:
Cells.Clearで一度シートを真っ白にしてから、1行目に「学籍番号」「学生氏名」という見出しを書き直しています。これにより、古いデータが残るのを防いでいます。
2. CSVファイルの選択
filePath = Application.GetOpenFilename("CSVファイル (*.csv), *.csv", ...)- 役割: ファイルを選択するウィンドウ(ダイアログ)を開きます。
- ポイント: ファイルを選ばずに「キャンセル」を押した場合、そこで処理を中断するようになっています。
3. 一時シートへの取り込み
Set tempWs = ThisWorkbook.Worksheets.Add With tempWs.QueryTables.Add(...)- 役割: 作業用の「使い捨てシート」を新しく作成し、CSVの内容を流し込みます。
- ポイント: 直接1行ずつ読み込むのではなく、
QueryTableという機能を使って一気に取り込むことで、処理を高速化しています。また、日本語が文字化けしないようにShift-JISを指定しています。
4. 条件に合うデータの抽出(メイン処理)
For i = 2 To lastRow If tempWs.Cells(i, 2).Value = "経済学科" Then wsDest.Cells(destRow, 1).Value = tempWs.Cells(i, 1).Value '学籍番号 wsDest.Cells(destRow, 2).Value = tempWs.Cells(i, 3).Value '氏名 destRow = destRow + 1 End If Next i- 役割: 一時シートを1行ずつチェックします。
- ポイント: もしB列が「経済学科」だったら、その人の情報を「経済」シートの新しい行にコピーします。これがこのコードの「フィルター(抽出)」の心臓部です。
5. 並び替えと後片付け
With wsDest.Sort ... .Apply ' 並び替え tempWs.Delete ' 一時シートを削除- 役割: バラバラに抽出されたデータを、学籍番号(A列)が小さい順に並べ替えます。
- ポイント: 最後に、作業用に使った一時シートを削除して、ブックを元のきれいな状態に戻します。
まとめ:このコードの優れた点
- 安全設計: 「経済」シートがない場合にエラーで止まらず、メッセージを出して終了するよう工夫されています。
- 効率的: CSVを一度Excelシートに取り込んでから処理するため、コードが読みやすく、動きもスムーズです。
- 親切: 最後に「完了しました」と教えてくれるので、動いているか不安になりません。
次にこのコードを改良するとしたら、例えば「学科名を変えて抽出したい」といった要望が出てくるかもしれません。特定の箇所の書き換え方法など、さらに詳しく知りたい部分はありますか?
ステップ2:AIを使ったVBAマクロの修正手順【コピペでOK】
コードの全体像が見えたら、次は修正です。
分からない部分や変えたい箇所を一つずつAIに伝えましょう。
- 「一時シートへの取り込み」とはどういうことですか?
-
「一時シートへの取り込み」とは、「計算や加工をするための『作業用スペース』として、新しいシートをその場で作ってデータを広げること」です。
具体的には以下のイメージです:
- 新品のノート(新しいシート)を1枚用意する。
- CSVの中身をそのノートにすべて書き写す。
- そこから必要なデータだけを本番用の「経済」シートに書き写す。
- 終わったらそのノート(新しいシート)を破棄する。
なぜこれをするのか?
CSVファイルを直接1行ずつ読み込むよりも、一度Excelのシートにドバッと展開してから作業したほうが、VBAでは処理が速く、コードも簡単になるからです。
💡 コツ:一度にたくさん変えようとしない
変更点は1回のやり取りに1〜2項目が限界です。
複数の修正を一気に依頼すると、コードが壊れる原因になります。
- 経済学科ではなく、政治学科の学生だけを選ぶ仕様に変更して。
-
政治学科の学生を抽出するように変更するには、コード内の**「判定条件」**となっている文字列を書き換えるだけでOKです。具体的には、手順4の
If文の条件を修正します。修正後のコード(該当部分のみ)
VBA' 4. 政治学科の学生を抽出して転記 Dim i As Long, destRow As Long lastRow = tempWs.Cells(tempWs.Rows.Count, "A").End(xlUp).Row destRow = 2 For i = 2 To lastRow ' ▼ ここを "経済学科" から "政治学科" に変更 If tempWs.Cells(i, 2).Value = "政治学科" Then wsDest.Cells(destRow, 1).Value = tempWs.Cells(i, 1).Value wsDest.Cells(destRow, 2).Value = tempWs.Cells(i, 3).Value destRow = destRow + 1 End If Next i修正が必要な3つのポイント
もし「政治」という名前のシートにデータを出したい場合は、以下の3箇所もセットで変更するとより完璧です。
- シート名の指定:Set wsDest = ThisWorkbook.Worksheets(“経済”)→ Set wsDest = ThisWorkbook.Worksheets(“政治”)
- エラーメッセージ:MsgBox “「経済」シートが見つかりません。”→ MsgBox “「政治」シートが見つかりません。”
- 学科の判定条件(上記コード):If tempWs.Cells(i, 2).Value = “経済学科”→ If tempWs.Cells(i, 2).Value = “政治学科”
アドバイス
もし、今後「法学科」や「商学科」など、毎回違う学科を選びたいのであれば、特定のセル(例えば「設定」シートのA1セルなど)に学科名を入力しておき、VBAがそのセルを読み取って抽出するように作り変えることも可能です。
修正が完了したら「修正後のコードの全文を出して」と一言追加するのがおすすめです。
部分的な修正だけでは貼り付け箇所が分かりにくいので、フルコードで出力してもらいましょう。
ステップ3:VBAのエラーメッセージをAIで直す方法
修正後のコードをVBEに貼り付けて実際に動かしてみます。
⚠️ 一発で動かなくて当然です
エラーが出ることは珍しくありません。
大事なのは「エラーメッセージをそのままAIに貼り付けること」。
それだけで原因と解決策を出してくれます。
▼ エラー対応のプロンプト例
Excelマクロを実行したら以下のエラーが出ました。原因と解決策を教えてください。
(エラーメッセージをそのまま貼り付ける)
- エラー:「政治」シートが見つかりません。
-
そのエラーは、コードの中で「『政治』という名前のシートに書き込みなさい」と命令しているのに、実際のエクセルファイルの中にそのシートが存在しないために発生しています。
エクセル操作で解決する(一番簡単)
エクセルの画面下部にあるシート見出しの「+」ボタンを押し、新しいシートを作って名前を「政治」に変更してください。 その後、もう一度マクロを実行すれば正常に動きます。
よくあるミス
- 「政治 」(最後にスペースが入っている): シート名に余計な空白があると別物とみなされます。
- 全角・半角の違い: 「政治」が全角で、コード内が半角(またはその逆)だとエラーになります。
まずは、「政治」という名前のシートが本当にあるかを再確認してみてください。
まとめ:AIがあれば「VBAコード作成・修正」は事務職でもできる
今回ご紹介した3ステップをおさらいします。
- 現状把握:VBEでコードを開き、AIに意味を解説してもらう
- 修正:変えたい部分をAIに伝え、コードを書き直してもらう
- テスト:エラーメッセージをAIに貼り付けて解決してもらう
「VBAなんて自分には無理」とあきらめていた業務を自分で解決できたという体験は、
業務への向き合い方を大きく変えてくれます。
AIを使えば、次のようなことが実現します。
- 制度変更のたびに情報システム課や外部業者に依頼しなくて済む
- 部署内で「自分たちで直せる」という自信と文化が生まれる
- 問い合わせの待ち時間・費用のムダがなくなる
まずは、職場で「誰も触れないExcelファイル」を一つ探してみてください。そこがAI活用の第一歩です。
うまくいかない場合は、コメント欄で気軽に相談してください。
次に読むなら:
👉 【Excel VBA】AIに書かせたコードはどう使う?マクロ設定と貼り付け方入門
👉 NotebookLM 使い方|PDFをAIで要約・検索する方法









コメント