Excel VBAは便利ですが、処理が重くなりやすいという問題を抱えています。数千〜数万行のデータを扱う場合、ループが遅い・シート操作が多い・Variant型が多いなどの原因により、処理時間が1分以上かかることも珍しくありません。特に、古い知識のまま作られたマクロや部門で受け継がれてきた“レガシーVBA”では、処理速度が大きな課題になります。
しかし高速化の知識を一から習得するのはハードルが高く、改善方法を学びながら改修するには多くの時間が必要です。そこで強力な助けとなるのがChatGPTを使った「高速化VBAの自動生成」です。ChatGPTは処理の内容を説明するだけで、高速化の定石を取り入れたVBAコードを自動で生成してくれます。さらに、既存コードを高速化するための最適な改善案も提示できるため、実務のスピード改善に大きく貢献します。
この記事では、ChatGPTを使って高速化されたVBAコードを作成するための具体的な手順、プロンプト設計術、コード改善のポイント、実務例をわかりやすく解説します。重いマクロに悩んでいる方、より効率的なVBAを書きたい方に役立つ内容です。
目次
- ✅ ChatGPTで高速化VBAを作成するステップ①:現在の処理内容を正確に伝える
- ・ChatGPTは“処理の目的と流れ”が分かると高速化案を生成しやすい
- ✅ ChatGPTで高速化VBAを作成するステップ②:高速化の方針を明確に指定する
- ・方針を指定すると“高速化仕様のVBA”が確実に生成される
- ・高速化ルールの背景
- ✅ ChatGPTで高速化VBAを作成するステップ③:具体的なデータ構造を伝える
- ・配列化や最終行などの生成精度が上がる
- ✅ ChatGPTで高速化VBAを作成するステップ④:既存コードを高速化したい場合
- ・既存コードを貼り付けて“問題点を洗い出す”
- ・改善版を作成依頼
- ✅ ChatGPTで高速化VBAを作成するステップ⑤:処理速度の可視化まで依頼する
- ✅ ChatGPT × 高速化VBAの定石(ChatGPTに明示して活用する)
- ・配列化(Range操作削減)
- ・Select / Activate の削除
- ・Application設定
- ・高速な辞書(Dictionary)利用
- ・With構文で参照短縮
- ✅ ChatGPT × 高速化VBAの実務例
- ・実務例①:10,000行のデータ抽出が“30秒 → 1秒”に
- ・実務例②:集計作業が“1分 → 2秒”に
- ・実務例③:大量ファイルの結合処理が“5分 → 20秒”に
- ✅ まとめ:ChatGPTを使えば“高速化されたVBA”を簡単に作れる
✅ ChatGPTで高速化VBAを作成するステップ①:現在の処理内容を正確に伝える
・ChatGPTは“処理の目的と流れ”が分かると高速化案を生成しやすい
まずは、どのような処理を行いたいのかChatGPTに明確に伝える必要があります。高速化のポイントは処理フロー・対象データ・出力内容を正確に伝えることです。
【依頼例】
「シートAの10000行のデータを読み取り、指定条件に一致する行をシートBへコピーするVBAを高速化した形で作ってください。」
ChatGPTは、この情報を元に、
- 配列での一括読み込み
- Application設定の制御
- Forループ最適化
- Select / Activate の削除
など、高速化の基本要素を自動で含めたコードを作成します。
✅ ChatGPTで高速化VBAを作成するステップ②:高速化の方針を明確に指定する
・方針を指定すると“高速化仕様のVBA”が確実に生成される
ChatGPTは柔軟ですが、以下のように具体的な高速化方針を指示することで、より実務に即した高速化VBAを生成できます。
以下の高速化ルールに従ってVBAを作ってください。
・Select / Activate を使わない
・処理対象は配列に読み込む
・画面更新をOff
・自動計算をManual
・With構文で参照範囲を短縮
・FindよりDictionaryを優先
このように条件を付けると、ChatGPTが生成するコードの品質が一気に向上します。
・高速化ルールの背景
上記の高速化はVBAの“定石”であり、ChatGPTに明示することによってより確実に反映されます。
- Select / Activate
→ 無駄な画面操作が消えるため大幅に高速化 - 配列使用
→ Range操作を最小限に抑えられる - 画面更新Off
→ 再描画時間を削減 - 計算式停止
→ 計算式の再計算が一時的に止まり高速化 - With構文
→ オブジェクト参照が短縮され最適化 - Dictionary
→ 高速な検索・重複チェックが可能
ChatGPTはこれらをすべて組み込んだコードを自然に生成できるため、実務で活用しやすくなります。
✅ ChatGPTで高速化VBAを作成するステップ③:具体的なデータ構造を伝える
・配列化や最終行などの生成精度が上がる
高速化VBAでは、データの構造が非常に重要です。
例:
- データは何列あるのか
- 条件判定の対象列はどれか
- 重複チェックのキーは何か
【依頼例】
「A〜F列のデータから、C列が“済”の行だけを抽出して別シートにコピーする高速化VBAを作ってください。」
ChatGPTは、
- 配列でA〜F列を一括取得
- 条件判定
- 結果配列にまとめて高速貼り付け
という構造を生成します。
✅ ChatGPTで高速化VBAを作成するステップ④:既存コードを高速化したい場合
・既存コードを貼り付けて“問題点を洗い出す”
レガシーなVBAや遅い処理を高速化したい場合、ChatGPTにコードそのものを読み解かせます。
このコードは遅いので、高速化のための問題点を指摘してください。
(コードを貼る)
ChatGPTは次のような改善点を提示します。
- Select多用
- Variant使用
- 最終行取得が非効率
- 行ごとの貼り付けで遅い
- 不要なIf分岐
・改善版を作成依頼
上記の問題点を解消した高速化バージョンのコードを書いてください。
コメント付きでお願いします。
この2段階ステップで、高度な高速化VBAが完成します。
✅ ChatGPTで高速化VBAを作成するステップ⑤:処理速度の可視化まで依頼する
高速化の効果を数値で把握すると、改善の手応えがわかりやすくなります。
処理前と処理後の実行時間を比較するための計測コードを追加してください。
Timer関数を使用してください。
ChatGPTは以下のようなコードを組み込んでくれます。
Dim t As Single
t = Timer
' 処理本体
MsgBox "処理時間:" & Format(Timer - t, "0.00") & "秒"
これにより“高速化の実感”が明確になります。
参考:【VBA】TimeValue関数の使い方と活用方法:時刻の計算
✅ ChatGPT × 高速化VBAの定石(ChatGPTに明示して活用する)
・配列化(Range操作削減)
Dim v As Variant
v = Range("A1:F10000").Value
→ Rangeアクセスを最小限にして数十倍高速化。
・Select / Activate の削除
Sheets("Sheet1").Range("A1").Value = 1
→ 直接参照へ変更。
・Application設定
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
→ 大規模データでは必須。
・高速な辞書(Dictionary)利用
重複チェックや照合を高速化。
・With構文で参照短縮
With Sheets("Data")
.Range("A1").Value = 1
End With
✅ ChatGPT × 高速化VBAの実務例
・実務例①:10,000行のデータ抽出が“30秒 → 1秒”に
Before:
- 行ごとにRangeアクセス
- IF文が多重ネスト
- Select多用
After:
- 配列処理
- 条件一括判定
- 一括貼り付け
→ 30倍高速化
参考:ChatGPTにVBAコードを正確に書かせる方法|実務レベルのマクロを安定生成するプロンプト設計術
・実務例②:集計作業が“1分 → 2秒”に
Before:
- Forループでシートを移動しまくる
- 毎回最終行を計算
After:
- 全データを配列に読み込み
- 計算だけロジック化
- 最後に1回だけ貼り付け
→ 圧倒的高速化
・実務例③:大量ファイルの結合処理が“5分 → 20秒”に
Before:
- ファイルごとに貼り付け操作
- 保存動作が多すぎ
After:
- FileSystemObjectで高速ループ
- データだけ配列抽出
- 最後に統合して保存
✅ まとめ:ChatGPTを使えば“高速化されたVBA”を簡単に作れる
記事の最後にポイントを整理します。
- ChatGPTは目的を伝えるだけで高速化されたVBA構造を提案できる
- 配列化・辞書利用・Application設定など“高速化の定石”を自動で反映できる
- 既存の遅いマクロを貼り付ければ問題点の分析から改善コードまで生成できる
- 処理速度の測定コードやエラー対策もChatGPTに依頼できる
- 高速化VBAは実務効果が大きく、数十倍の速度改善も実現可能
ChatGPTを活用すれば、高速化VBAは専門知識がなくても簡単に実現できます。ぜひ実務で使うマクロ開発に取り入れ、日常業務の処理速度を劇的に向上させてください。