【Excelマクロ】担当者不在で動かない…AIにコード修正させて復旧する方法

目次

はじめに

「前任者が作ったExcelマクロ、仕様が不明で誰も修正できない…」
あなたの職場にも、使いたいのに使えないファイルが眠っていませんか?

私の部署では、銀行の入金データを大学の基幹システムに取り込むために取り込んだデータをシステムの規格に合わせて出力するためのExcelマクロがまさにその状態でした。

入試制度の変更で改修が必要な状況にも関わらず、Excelマクロを使ったことのある職員は一人もおらず、そもそもどうやってその設定をしているのか、コードがどこにあるのかすら分からない、コードの場所が分かっても何が書いてあるかさっぱりわからない。そんな状況でした。

そもそも、そういう状況になること自体が問題ではあるのですが。。。

しかし、結論から言うと、Excelマクロの知識が全くない状態から、AIを活用してこのマクロの解読と修正に成功しました。

この記事では私自身が実践した、AIを活用しながらExcelマクロとは何かを解き明かし、修正し使える状態にするまでの具体的なプロセスをご紹介します。専門的な知識が全く無くても業務改善を推進できる方法になるのでぜひ参考にしてください!

当ブログは現役大学職員の私が、AIツール(Gemini, ChatGPTなど)を活用し、事務業務改善をするためのAI活用ブログです。私自身、文系大学卒の非エンジニアの事務職員なので、専門用語は避けて読者の皆さんが分かりやすく、すぐ使える情報をお届けできるよう心がけています。
プロフィールの詳細は、以下をご覧ください。

Excelマクロとは?

そもそも、Excelマクロとは、繰り返し行う操作を記録して、ボタン一つで自動的に再現する機能です。面倒な繰り返し作業を瞬時に終わらせ、業務時間を大幅に短縮できることが特徴です。

ただ、基本的にはVBAコードというコードを書くことでやることを指示するため、私を含めコードが分からない人には通常使うことができません。仕組みが理解できず、修正・更新できない状態のExcelマクロが以下のようなケースで発生することが多いです。

  • 作成者が退職・異動してしまった
  • 仕様書や引き継ぎメモが残っていない
  • コードが複雑で解読することができない

このようなマクロは、業務プロセスの変更やシステムのアップデートに対応できず、業務停滞の大きなリスクとなります。また、処理に時間がかかるためマクロを使用しているケースが多いため、手作業に戻すとなると、余計な時間がかかるだけでなく、ミスも発生しやすくなってしまいます。

AIでExcelマクロを解読・修正する3つのステップ

専門知識がなくても、AIを活用しながら以下の3ステップで進めれば、知識がなくてもマクロの修正は十分に可能です。

本記事では、AIとの対話に焦点を当てて解説を進めます。VBE(Visual Basic Editor)の起動方法やマクロ実行ボタンの設置といったExcelの操作については、以下の記事で詳しく解説しています。

ステップ1:現状把握

まず、そもそもどこにコードが書かれているのか、そのコードがどんな役割をしているのかを調べます。
ここでは、GoogleのAI Geminiを使って操作しています。Chat GPTやCopilot Chat(Microsoft)、Claudeなど様々な生成AIがありますが、ご自身の使い慣れているもの、大学(会社)が契約しているものなどを使用してください。

(1) VBAコードの場所を特定する

そもそもコードがどこにあるか分からない場合は、AIに聞いてみましょう。
以下に、質問内容とAIの回答(今回はGemini3 高速モード使用)を掲載します。

Excelマクロについて、VBAコードはどこにありますか?開き方を教えて。
簡潔に初心者向けに回答してください。

Excelマクロの本体であるVBAコードは、Excelに標準搭載されている「VBE(Visual Basic Editor)」という専用の画面の中にあります。

初心者の方でも一番簡単に開ける手順は以下の通りです。

・VBAコード画面の開き方
1. Excelファイルを開く
2. キーボードの Alt キーを押しながら F11 キー を押す
これだけで、Excelとは別の新しいウィンドウ(VBE)が立ち上がります。

・コードの場所を確認する
→画面左側にある「プロジェクトエクスプローラー」内のフォルダ(「標準モジュール」など)をダブルクリックすると、右側の白い画面にコードが表示されます。

・「開発」タブを表示させる方法
→今後よく使う場合は、リボンメニューに専用のタブを出しておくと便利です。
1. リボンのどこでも良いので右クリックし、[リボンのユーザー設定] を選択。
2. 右側のリストにある [開発] にチェックを入れて [OK] を押す。
3. 表示された [開発] タブ の一番左にある [Visual Basic] をクリックすれば、いつでもVBEが開けます。
もし、特定のボタンに登録されたコードを見たい場合は、そのボタンを右クリックして「マクロの登録」→「編集」を押すと直接コード画面へ飛ぶことができます。

次に、実際に簡単なマクロを書いて動かしてみる方法を解説しましょうか?

質問内容(プロンプト)は自由に変えてみてください。自分の思い通りの質問が得られない際は質問の仕方を変えてみてくださいね。

(2) コードの役割とルールを解説してもらう

最初の回答に従い、VBEを開いて表示されたコードをすべてコピーしてAIのチャット画面に貼り付け、「このコードの意味と役割を教えて」と聞きます。

今回は学生情報の入ったcsvデータを読み込み「経済学科」の学生の学籍番号と氏名のみを抽出し、シートにリストを出力するためのコードを例に使用します。

このVBAコードを理解し、意味と役割を初心者向けに分かりやすく解説して。
(ここにコピーしたコードを貼り付け)

ご提示いただいたVBAコードは、「外部のCSVファイルから学生データを読み込み、その中から『経済学科』の学生だけを選んで、別のシートにきれいに並べて保存する」という一連の作業を自動化するものです。

初心者の方にも分かりやすいよう、処理の流れを5つのステップに分けて解説します。

このコードがやっていること(全体の流れ)

このマクロは大きく分けて以下の手順で動いています。

  1. 準備:「経済」という名前のシートがあるか確認し、中身をリセットする。
  2. ファイル選択:読み込みたいCSVファイルをユーザーに選ばせる。
  3. 一時的な読み込み:新しいシートを一時的に作り、そこにCSVの中身をすべて書き出す。
  4. 抽出とコピー:一時シートを上から順に見て、「経済学科」の人だけを「経済」シートにコピーする。
  5. 仕上げ:学籍番号順に並べ替え、使い終わった一時シートを消して完了。

各セクションの詳しい解説

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にコードを書いてもらいます。

(1) 説明の補足をしてもらう

全体の説明を受けた上で、意味が分からない箇所があれば、その部分をコピーしてAIに補足質問をします。

「一時シートへの取り込み」とはどういうことですか?

「一時シートへの取り込み」とは、「計算や加工をするための『作業用スペース』として、新しいシートをその場で作ってデータを広げること」です。

具体的には以下のイメージです:

  1. 新品のノート(新しいシート)を1枚用意する。
  2. CSVの中身をそのノートにすべて書き写す。
  3. そこから必要なデータだけを本番用の「経済」シートに書き写す。
  4. 終わったらそのノート(新しいシート)を破棄する。

なぜこれをするのか?

CSVファイルを直接1行ずつ読み込むよりも、一度Excelのシートにドバッと展開してから作業したほうが、VBAでは処理が速く、コードも簡単になるからです。

(2) 修正内容を指示してコードを生成させる

具体的に変更したい内容をAIに伝え修正後のコードを出力してもらいます。

経済学科ではなく、政治学科の学生だけを選ぶ仕様に変更して。

政治学科の学生を抽出するように変更するには、コード内の**「判定条件」**となっている文字列を書き換えるだけで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箇所もセットで変更するとより完璧です。

  1. シート名の指定:Set wsDest = ThisWorkbook.Worksheets(“経済”)→ Set wsDest = ThisWorkbook.Worksheets(“政治”)
  2. エラーメッセージ:MsgBox “「経済」シートが見つかりません。”→ MsgBox “「政治」シートが見つかりません。”
  3. 学科の判定条件(上記コード):If tempWs.Cells(i, 2).Value = “経済学科”→ If tempWs.Cells(i, 2).Value = “政治学科”

アドバイス
もし、今後「法学科」や「商学科」など、毎回違う学科を選びたいのであれば、特定のセル(例えば「設定」シートのA1セルなど)に学科名を入力しておき、VBAがそのセルを読み取って抽出するように作り変えることも可能です。

今回の回答のように修正した部分のみ回答されても、どこを直して良いか分からない場合は「修正後のコードの全文を出して」「修正後のコードをフルコードで出力して」などを伝えると全文を出してくれるので、そのままコピペして使えるようになります!

ステップ3:テストとエラー対応

元々あったコードを削除し、AIが生成したコードを貼り付けます。コードを実行し、正しく動くか確かめてみましょう。

エラーが出た場合

エラーが出た場合は、エラーメッセージをそのままコピーしてAIに伝えるだけで、原因の特定と修正したコードを出力してくれます。処理の複雑さにもよりますが、一回で思い通りに動くことは少ないです。何度もやり取りをすることで自身が思い描く形に近づいていきます。

エラー:「政治」シートが見つかりません。

そのエラーは、コードの中で「『政治』という名前のシートに書き込みなさい」と命令しているのに、実際のエクセルファイルの中にそのシートが存在しないために発生しています。

エクセル操作で解決する(一番簡単)

エクセルの画面下部にあるシート見出しの「+」ボタンを押し、新しいシートを作って名前を「政治」に変更してください。 その後、もう一度マクロを実行すれば正常に動きます。

よくあるミス

  • 「政治 」(最後にスペースが入っている): シート名に余計な空白があると別物とみなされます。
  • 全角・半角の違い: 「政治」が全角で、コード内が半角(またはその逆)だとエラーになります。

まずは、「政治」という名前のシートが本当にあるかを再確認してみてください。

まとめ

今回は、専門知識ゼロの状態からAIを活用し、Excelマクロの解読と修正に成功したプロセスをご紹介しました。
本来であれば、専門的な知識がなければできないことを内部で解決することで以下のようなメリットがあります。

  • 毎年の制度変更やシステムのアップデートに、部署内で迅速に対応できる体制ができる
  • 外部業者や情報システム課に依頼していた、時間と費用の両面で大幅なコスト削減が期待できる
  • 「自分たちには分からない」と諦めていた業務を、主体的に改善していくマインドが部署内に生まれる

AIを活用することで、多くの業務を効率化し自身の仕事の幅を広げることができます。慣れるまでには少し時間を要するかもしれませんが、まずは触ってみることが大事です。今現在、繰り返し行なっている処理をAIに相談し、自動化ができるか試してみましょう。複数回試してみて、うまくいかない場合はぜひコメントでご相談ください。

Don't forget to share!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

20代後半・二児の父。文系の4年生大学を卒業後、民間企業を経て、都内の総合大学で事務職員として勤務中。AIを使用した業務効率化や実生活での活用について発信。事務職員(非エンジニア)目線で誰にでも再現できる活用法の発信を心がけていきます。

コメント

コメントする

CAPTCHA


目次