Chatgpt×Excel活用方法 ChatGPT活用術 マクロ作成

ChatGPTでレガシーマクロをリファクタリング|古いVBAコードを最新仕様へ効率的に書き直す方法

長年使われてきたExcelマクロ(VBA)は、作成した人が異動・退職してしまったり、処理内容が複雑に膨らみ続けたりすることで、誰も手を付けられない“レガシーマクロ”となっているケースが非常に多く存在します。動くには動くものの、変更が難しい・修正するとどこかが壊れる・処理が遅い・コードの意味が分からない、といった問題が積み重なり、業務効率の大きな妨げとなることも珍しくありません。

しかし、レガシーマクロを一から読み解いて綺麗に書き直すのは非常に時間がかかります。まとまっていない変数、無駄なループ、非効率な処理、膨大なコメント不足など、改修には“専門性と時間”が必要です。

そこで強力に役立つのがChatGPTを使ったレガシーマクロのリファクタリング支援です。ChatGPTは、レガシーなVBAコードをそのまま貼り付けるだけで、構造分析、改善案提示、コード書き換えまで自動で行えます。さらに、モジュールの分割、不要処理の削除、変数の型付け、自動エラー対策など、実務に必要な“保守しやすいマクロ”へ大幅改善できます。

この記事では、ChatGPTを使ってレガシーマクロをリファクタリングする手順、プロンプトの作り方、実務での改善例、注意点を詳しく解説します。現場で長年動いてきた古いマクロを安全にアップデートしたい人に向けた内容です。

✅ ChatGPTでレガシーマクロをリファクタリングする基本ステップ

・ChatGPTは「コード分析」に最適化されている

ChatGPTは、VBAコードを貼り付けるだけで以下を自動で行います。

  • 処理の意図を読み解く
  • ロジックの流れを解析する
  • 無駄な処理や冗長な記述を特定
  • 書き換え先の構造案を提示
  • 改善後のコードを生成

レガシーマクロの“ブラックボックス化した部分”を可視化してくれるため、現場の担当者が理解しやすくなります。

・リファクタリング依頼に必要な情報

ChatGPTに依頼する際は、コードだけでなく以下も伝えると精度が上がります。

  • マクロの目的
  • 入力データと出力データの構造
  • 実行時の状況(頻度、所要時間)
  • 既知の不具合
  • 修正したいポイント

特に「目的」を追加することで、ChatGPTはコード全体を最適化した形でリファクタリングできます。


✅ ChatGPTでレガシーマクロをリファクタリングするプロンプト設計

・最も効果の高いプロンプト例

以下のVBAマクロをリファクタリングしてください。

【目的】
毎日集計ファイルを自動生成する処理です。

【改善したい点】
・処理が遅い
・可読性が低い
・変数が未宣言のまま使われている

【コード】
(ここに長いVBAコードを貼る)

上記を以下の方針で書き直してください。
・冗長な処理は整理する
・変数はすべて型付きで宣言
・処理ごとにSubを分割
・コメントを追加
・エラー処理を追加

この形式で依頼すると、ChatGPTは“実務向けの保守しやすいマクロ”に書き換えます。

・コードが長い場合は「分割」で対応

長いレガシーコードは1回の回答で出力しきれない場合があるので次のように依頼します。

コードが長いため、改善版は複数回に分けて出力してください。
「次へ」と指示したら続きを出してください。

ChatGPTは正確に分割して出力できます。


✅ ChatGPTにレガシーマクロを“読み解かせる”方法

・コードの意味を説明させる

まずコードが何をしているか理解するために以下を依頼します。

このコードが行っている処理を、
1. 大まかな流れ
2. 処理単位ごとの詳細
に分けて説明してください。

ChatGPTは処理の意図や役割を分解して説明します。

・問題箇所の洗い出し依頼

このコードの問題点を列挙し、それぞれに改善案を提示してください。

問題点が明確になれば、どこから修正すべきかが分かります。

(例)

  • 変数がVariantで遅い → Long にする
  • 毎回UsedRangeを走査して非効率 → LastRowに変更
  • エラー処理がない → On Error構文を追加

✅ ChatGPTでレガシーマクロを整った構造に書き直す

・ChatGPTに“構造改善”を依頼すると劇的に読みやすくなる

レガシーマクロで最も問題となるのは1つのSubに大量の処理が詰め込まれていることです。

ChatGPTへの依頼例:

このコードを複数のSubに分割し、
・初期設定
・データ読み込み
・集計処理
・出力処理
の4つに整理してください。

ChatGPTはコード構造を理解した上で適切に分割します。

・変数の型付けを自動化

すべての変数に型を付けてください。

Variantを多用した遅い処理が改善されます。

・コメントの追加

初心者でも理解できるよう、処理ごとにコメントを追加してください。

コードの“ブラックボックス化”を防げます。

・処理高速化を自動提案させる

このコードを高速化するために必要な変更点を教えてください。

ChatGPTはScreenUpdating、Calculation制御、For Each改良などを提示します。

参考:【VBA】Application.ScreenUpdatingプロパティの使用方法と特徴

参考:ChatGPTでブック名変更・シート操作マクロ作成|初心者でも自動化できる実務用VBAの作らせ方




✅ ChatGPTで“安全なコード”へ書き換える

レガシーマクロにありがちな「壊れやすさ」もChatGPTで改善できます。

・エラー処理の追加

On Error の処理を追加し、どこで失敗したか分かるようにログを残してください。

・保護シートの扱い

シートが保護されている場合にエラーにならないようにしてください。

・存在チェックの追加

シート名の存在判定を追加してください。

レガシー特有の“動いていたけど実は危険なコード”を安全にできます。


✅ ChatGPTで“処理速度を最適化したコード”に変換する

ChatGPTは高速化テクニックにも対応しています。

・高速化ポイントの例

  • 最終行取得の最適化
  • ループ回数削減
  • Variant → Long/Double に変更
  • Application.ScreenUpdating False
  • Range操作 → 配列化
  • 不要なSelect/Activate削除

依頼例:

このコードを高速化するために、Range操作を配列に置き換えて最適化してください。

ChatGPTは配列処理版のVBAへ書き換えてくれます。

参考:ChatGPTにVBAコードを正確に書かせる方法|実務レベルのマクロを安定生成するプロンプト設計術


✅ ChatGPT × レガシーマクロ改修の実務例

・実務例①:30分かかっていた集計処理が“3秒”に

Before:

  • シートを毎回Selectしてコピー
  • Variantタイプ多数
  • LastRowが誤取得

After:

  • 配列処理に変更
  • シート操作削減
  • 型付き変数

3秒で処理完了


・実務例②:誰も触れなかった2000行マクロを安全に改修

Before:

  • Subが1つだけ
  • コメントなし
  • 処理意図不明

ChatGPTの改善:

  • 処理分割
  • 意図説明付きコメント
  • 冗長処理削除
  • エラー処理追加

→ 保守可能なマクロへ再生


・実務例③:古い記述 → 最新VBA仕様へ置換

  • On Error Resume Next乱用 → 適切なトラップへ
  • Activate/Select多用 → 直接参照に変更
  • Dirループの改善
  • データ型の厳密化

✅ まとめ:ChatGPTはレガシーマクロの“再生と近代化”に最適なツール

最後に、この記事の要点を整理します。

  • ChatGPTはレガシーマクロの構造解析・問題点洗い出しに非常に強い
  • コードの目的・課題を伝えることで高精度なリファクタリングが可能
  • 冗長な処理の削除、変数型付け、構造分割、コメント追加など保守性が向上
  • 高速化のための配列処理やSelect削除もChatGPTが自動で行える
  • 安全性向上(エラー処理・存在チェック)にも対応
  • 現場で誰も触れられなかったレガシーコードを短時間で“最新仕様”へ変換可能

ChatGPTを活用すれば、レガシーマクロのリファクタリングは難しい作業ではなくなります。ぜひ古いマクロをChatGPTで再生し、保守しやすく高速・安全なコードへ生まれ変わらせてください。

    -Chatgpt×Excel活用方法, ChatGPT活用術, マクロ作成