AI × Excel のトラブル ChatGPT活用術 トラブル解決

ChatGPTが既存のVBAを修正できない原因と実務で使える対処法を徹底解説

Excel業務を効率化する中で、「既にあるVBAコードを修正したい」という場面は非常に多くあります。そこでChatGPTにコードを貼り付け、「このVBAを◯◯するように修正してください」と依頼したのに、意図したとおりに修正されなかった、動かないコードになってしまった、という経験はありませんか?

ChatGPTはゼロからVBAを書くのは比較的得意ですが、既存コードの修正だけは誤りが多く、実務で最も失敗が起きやすい領域です。

  • ロジックを読み違える
  • 変数スコープを壊してしまう
  • 途中の部分だけ勝手に書き換える
  • For や If の整合性を崩す
  • 必要な行を削除してしまう

こういったケースは日常的に発生します。

この記事では、ChatGPTがなぜ既存のVBAを正しく修正できないのか、その根本原因と、実務で使える“最適な修正依頼法・プロンプト・運用方法”を徹底解説します。

VBAを扱う方、ChatGPTを業務効率化に活用したい方、RPA・自動化担当者にも必ず役立つ内容です。

目次

✅ ChatGPTが既存VBAを正しく修正できない本当の理由

ChatGPTが既存VBAに対して誤修正を行うのには、明確な“構造的理由”があります。


・理由1:ChatGPTはコードの「全体脈絡」を理解するのが苦手

ChatGPTは自然言語での推論は得意ですが、VBAのような構造化されたコードでは、

  • 変数のスコープ
  • 宣言の位置
  • 依存関係
  • 流れ(ロジックの時系列)
  • 前後関係(If〜End If / For〜Next)

を正確に把握するのが苦手です。

そのため、既存コードの一部改造を依頼した際に、

  • 必要な変数の宣言を消す
  • 逆に不要な宣言を追加する
  • For や If の対応関係を破壊する

といった“ロジック全体を崩してしまう”ケースが生じます。


・理由2:ChatGPTは「状況依存コード」を理解できない

既存コードの中には、

  • 画面依存(Select/Activate)
  • Excelの前提状態(フィルター、結合セル)
  • ブックが複数ある前提
  • RPAが併用されている前提

といった“実行環境依存”の要素が含まれています。

ChatGPTは実行環境を感知できないため、それらを誤って削除したり、逆に動かないコードを書き足してしまいます。


・理由3:部分修正を依頼すると“全体を書き換えようとする”

ChatGPTは修正依頼を受けると、次のような動作をします。

  • コード全体を理解しようとする
  • 必要以上に書き換えようとする
  • 正常に動いている部分も改善しようとする

結果として、

「余計なところまで書き換わって壊れる」

ということが起こります。


・理由4:“どこを変更すべきか”の位置情報が欠落する

ChatGPTにコードを渡しても、どの部分を変更すべきかを正確に伝えないと、

  • 違う場所を書き換える
  • 同じロジックを2重に追加する
  • 条件分岐の挿入位置を誤る

など、修正箇所を誤認識します。


・理由5:修正に必要な“背景情報”が不足している

既存VBAは多くの場合、次のような背景を持っています。

  • 他の人が作った
  • 過去の業務の都合で追加された
  • ワークシート構造が変わっている
  • 不要なコードが混ざっている
  • 複数のマクロが連携して動いている

ChatGPTは“背景”を理解しないため、必要な部分を誤って消すことがあります。


✅ ChatGPTが修正すると壊れやすい「典型的なVBAパターン」


・典型1:最終行取得が複数回使われている

ChatGPTが勝手に lastRow を上書きして処理が壊れる。


・典型2:条件分岐が複雑なIF

IF × ELSE × ELSEIF の段階が多いほど破壊されやすい。


・典型3:ループの入れ子構造(For × Do)

ネスト整合性が壊されやすい。


・典型4:シート操作が多いコード

Select を消したことでかえって動かなくなるケースもある。


・典型5:プロシージャの分割が不十分

1つの Sub が長いと ChatGPT の理解力が追い付かず壊れる。


✅ ChatGPTに既存VBAを「正しく修正させる」ための最重要ルール

これは実務で最も成功率の高い方法です。


・ルール1:コード全体ではなく「修正対象の前後だけ」を渡す

ChatGPTにコード全体を渡すと書き換えすぎて壊れるため、

修正する部分の前後20〜30行だけを渡す

のが最適です。


・ルール2:変更点を“文章で”明確に箇条書きする

例:

【やりたいこと】
・B列が空白の行は処理対象外にしたい
・出力先シートを「集計」→「結果」に変更したい
・行番号のカウントはiではなくjを使いたい

ChatGPTはこうした構造化情報に強いです。


・ルール3:修正する位置を「コメント行」で指定する

例:

'▼ここから修正▼

(該当処理)

'▲ここまで修正▲

ChatGPTが迷子にならず、正確に修正できます。


・ルール4:禁止事項を必ず明記する

Select / Activate を使わない
コード全体を書き換えない
宣言部分を変更しない

これだけで壊れにくくなります。


・ルール5:修正後は必ずChatGPTに“レビューさせる”

上記コードに構文エラーがないか、論理矛盾がないかチェックし、必要な修正だけ行ってください。

二段階生成で精度が跳ね上がります。

参考:ChatGPTが構文エラーのあるVBAを出力する原因と正しい修正案を徹底解説




✅ ChatGPTで既存VBAの修正精度を100%に近づける“最適プロンプト”

これを使うと、壊れない修正が可能になります。


・最強プロンプト(コピペ可)

これから既存のVBAコードの一部修正を依頼します。

【重要ルール】
・該当箇所以外は絶対に変更しない
・Select / Activate を使わない
・宣言部分は変更しない
・構文を壊さない
・処理の順番を変えない
・修正する場所はコメント行(▼▼)で囲った範囲のみ

【修正したい内容】
1. ◯◯条件を追加したい
2. 出力先シート名を◯◯へ変更したい
3. エラー時の挙動を◯◯にしたい

【対象コード】
(修正箇所前後だけ貼る)

以上を踏まえて、該当部分だけ正確に修正してください。

このプロンプトは実務で最も成功率が高い方法です。


✅ ChatGPTが“間違った修正”を出してきたときの対処ステップ


・ステップ1:間違った部分だけ切り出して再依頼

失敗したコード全体ではなく、問題行だけ渡します。


・ステップ2:“論理の意図”を説明する

ChatGPTは意図を理解しないと誤るため、

この部分の処理意図は「◯◯です」

と説明すると正しい修正を提示しやすくなります。


・ステップ3:比較方式で修正させる

元のコードと、あなたが出したコードの違いを比較し、誤りがあれば修正してください。

ChatGPTは比較に非常に強いです。


・ステップ4:構文チェックのみの依頼

構文エラーに関係する部分のみ指摘してください。

“修正”ではなく“指摘”にすると壊れません。


・ステップ5:生成後のコードをChatGPTにレビュー依頼

ChatGPTは自己レビューが最も得意な作業です。

参考:ChatGPTで要件定義を自動化するプロンプト術|業務要件・機能要件・非機能要件まで整理できる


✅ 既存VBA修正に強い「段階式依頼フロー」

  1. 修正したい部分を明確化
  2. 修正箇所の前後だけ切り出す
  3. ルール(禁止事項)を提示
  4. 修正案を作成してもらう
  5. 修正案を自己レビューさせる
  6. 全体コードに組み戻す
  7. Excel側で検証

このフローを使うと、ChatGPTを“壊れないコード修正アシスタント”として活用できます。


✅ ChatGPTが既存VBA修正に強くなる「補助プロンプト集」


・プロンプト1:位置指定修正

コメント「▼修正開始」から「▲修正終了」の部分だけ修正してください。

・プロンプト2:最適化依頼

該当部分の処理スピードを改善してください。ただし論理は絶対に変更しないでください。

・プロンプト3:追加機能のみ挿入

既存ロジックを保ったまま、「〇〇」機能だけ追加してください。

・プロンプト4:削除の誤りを防ぐ

既存コードの行削除は禁止です。追加または置換のみで対応してください。

・プロンプト5:安全な改善

構文を壊さず、既存の処理に影響を与えない改善のみ行ってください。

✅ 実務で起きがちな「ChatGPTによる破壊例」と修正法


・破壊例1:変数宣言の削除

突然 Dim の一部が消えることがある。
→ 宣言部分を触らないルールをプロンプトで明示。


・破壊例2:If のEnd If漏れ

ChatGPTは深いネストで失敗しやすい。
→ 修正部分の前後だけを渡して整合性を保持。


・破壊例3:ループ構造を勝手に変える

For → Do に変えてしまう場合あり。
→ 処理構造の変更禁止のルールを明記。


・破壊例4:不要な With を追加

→ 使用禁止または明示的な制約を指定する。


・破壊例5:コメントを消す

背景が消えると破壊連鎖が起きるため注意。


✅ まとめ:ChatGPTは“既存VBA修正”が最も苦手だが、正しい依頼方法で精度は大幅に向上する

  • ChatGPTは既存コードのロジック全体を100%理解できない
  • 曖昧な指示だと推測で書き換え、誤修正が起こる
  • 修正範囲を最小化し、前後の挿入位置を明確にすると精度が急上昇
  • 禁止事項を設定すると壊れにくい
  • ChatGPTの自己レビューは極めて有効
  • 最適プロンプトを使えば、実務でも高精度な修正が可能

ChatGPTは「ゼロから書くより、修正のほうが難しい」ことを理解し、正しい依頼手順を踏むことで、高品質のVBA修正が実現できます。

    -AI × Excel のトラブル, ChatGPT活用術, トラブル解決