誰も読めなくなったVBAマクロをClaude AIに渡したら、3分でPythonに変換できた話

月末の夕方です。
全社一斉に配信された「経理システム更新に伴う請求書フォーマット変更のお知らせ」という無機質なメールが届きました。
普段なら数秒で読み流してゴミ箱に入れるだけの紙切れですが。今回は事情が違いました。
退職した前任者が遺した。あの「神エクセル」を改修しなければならなくなったのです。

属人化VBA:死活問題とスパゲッティコード

属人化。
経営層が好んで使うこの耳障りのいい言葉は。現場の人間にとっては死活問題そのものです。
一人の天才。あるいは狂気的なマクロ職人によって組み上げられたシステムは。その人間が席を立った瞬間、維持不能なレガシーと化してしまいます。
VBAはその最たる例かもしれません。
手軽に自動化を始められるがゆえに。設計書もないまま行き当たりばったりで拡張が繰り返されてしまうのです。

まず、覚悟を決めて、対象のExcelファイルを開きます。
開発タブからVisual Basic Editor(VBE)を起動するショートカット。Alt+F11。
このキーボードを叩く指が重く感じられます。
目に飛び込んでくるのは、数千行にも及ぶスパゲッティコードの山でした。

解読不能なコードと引き継ぎの闇

画面を埋め尽くす黒と青の文字が並んでいます。
変数名は「i」「j」「tmp_data1」といった。意味不明なアルファベットの羅列です。
エラー処理は「On Error Resume Next」という魔法の言葉で全て握りつぶされ。後任への引き継ぎ資料は「ソースコードにコメント残してます」の一言のみ。
そのコメントすら「ここは消さないこと!」「謎のバグ対応(2018年)」といった怪文書の類でした。

読めるわけがありません。
どこでシートを切り替え。どこで計算を回しているのかも定かではありません。
ブレークポイントを置いて一行ずつステップ実行(F8キー)してみますが。変数の値がころころ変わり、背後でExcelの画面が激しくチラついてしまいます。

VBA負の遺産

次に、「これ。どこまで遡れば正解があるんだ?」
結局

VBEに表示されたスパゲッティ状態のVBAコード

「これ、どこまで遡れば正解があるんだ?」
結局。その日は深夜までVBEの画面と睨み合っていました。コードのあちこちに散りばめられた「マクロ記録」の残骸。SelectやActivateが連打され。ひとつの処理が終わるたびにExcelがガクガクと震えます。
一番怖かったのは、変数宣言が一切ないことでした。すべての変数がVariant型だったのです。

ブラックボックスツールの継承責任

どこで何が代入され、どのタイミングでメモリが解放されるのかも分かりません。
1ヶ月半かけて丁寧に作り込んだ自分のツールなら。どこに何があるか手に取るように分かります。しかし、他人が書いた「動いているだけの化石」は。一箇所触れば全体が崩れ落ちるジェンガのような危うさがありました。
「もし明日、このツールが止まったら。この部署の集計業務は完全に麻痺する」。

一方で、その責任を、昨日までの前任者から、今日。自分が引き継いでしまったのだと痛感しました。

AIでVBAをPythonに:変換の秘訣

Claude AIがPythonコードを生成しているチャット画面

数百行から1,000行規模のコードを手作業で解読してPythonに書き直すなんて。到底正気の沙汰とは思えません。
そこで、AIに頼ることにしました。
やり方は拍子抜けするほどシンプルです。
VBEのコード画面でCtrl+A、Ctrl+Cをして。そっくりそのままClaudeのチャット欄に叩き込むだけです。

ただ「変換して」と投げるのは三流のやり方かもしれません。
VBAとPythonでは、根本的にデータ処理のパラダイムが違います。
VBAはExcelのセル一つ一つに直接アクセスして操作しますが。これをPythonでそのまま再現させると。非常に非効率で読みづらいコードになってしまいます。
AIの出力をコントロールするためには、明確な指示が必要です。

AIへの大量コード投入、その不安

そのため、例えば、次のような指示を投げます。
「このVBAコードをPythonを用いて同等の処理を行うコードに変換してください」
「pandasやopenpyxlを活用し。モダンで保守性の高いコードにすること」
「Excelのセル操作を再現するのではなく。データフレームとしての処理に再構築すること」
「元のコードの意図を推測し。冗長な処理があれば最適化すること」。

エンターキーを叩く

エンターキーを叩きます。

しかし、「1,000行もあるけど。本当に読み込めるのか?」
ブラウザのメモリがクラッシュするのではないか。あるいはAIにすら匙を投げられるのではないか。
そんな不安を抱えながら。クリップボードに溜まったコードをClaudeのテキストエリアに落とし込みます。膨大なスクロールバーがさらに小さくなりました。
しかし、Claudeは微塵も動じませんでした。

AI×PythonでVBA開発の劇的変革

「動くけど誰も直せない」VBAマクロが抱える爆弾に関する解説図(日本語UI)

「現在、コードを解析してPythonへの変換案を作成しています。しばらくお待ちください」。
その間、わずか数秒です。かつて同僚10人にVBAツールを配って歩き。1人ずつセキュリティ設定を触って回ったあの地獄の5〜8時間に比べれば。この待ち時間はあまりに静かで、そして希望に満ちていました。

約3分が経過しました。
かつて同じ規模の処理を自力で。それこそGoogle検索とStack Overflowを往復しながらVBAでゼロから構築したときは。優に1.5ヶ月は費やした記憶があります。
それが。Claudeとの対話だけで一気に最終形のコードが出来上がってしまったのです。
行数も劇的に変わりました。

まず、さらに。VBA時代に1,000行近くあった命令文は

Python移行でコード・ファイル・変数名改善

VBA時代に1,000行近くあった命令文は。Pythonのpandasライブラリを駆使することで。わずか80行程度に集約されました。
ファイルサイズの問題も解決です。数メガバイトあったマクロ付きExcelファイル(.xlsm)と格闘していた日々。今は、わずか数KBのPythonスクリプトと。データが入ったシンプルなCSVが1つあるだけになりました。

画面を埋め尽くす黒と青の文字に関する解説図(日本語UI)

AIが「変換案を作成しています」と表示してから数秒。画面にはもう新しいPythonコードがズラリと並んでいました。VBA時代に1,000行近くあった命令文は。信じられないほどスリムになっています。たった数百行のコードの中に、元のVBAがやっていた処理が全て凝縮されていました。変数の「i」「j」「tmp_data1」といった意味不明な羅列は跡形もなく消え去り。「invoice_data」「customer_id」「total_amount」など。一目で何を表すか分かる変数名に生まれ変わっています。

VBAの苦痛は過去、Pandasでデータ処理を刷新

まず、VBAコードを読み解くために何時間も費やしたあの苦痛は一体何だったのでしょうか。目を皿のようにして追いかけたセルの参照や、Select、Activateの連続はそこにはありません。その代わりに現れたのは、`pandas`というライブラリを使ったデータフレームの操作でした。VBAがExcelのセル一つ一つに指示を出すような職人技だとしたら、Pythonの`pandas`はシート全体を一つの巨大なデータベースとして捉え、まとめて処理する感覚に近いものです。列をまるごと足し算したり、特定の条件でフィルタリングしたり、並び替えたりといった操作が、たった数行で完結します。これは、まるで泥で汚れた古い機械が、最新のスマートデバイスに置き換わったような感覚でした。

💡 ここで一度立ち止まって考えてみてください

PythonやExcel自動化スキルを持ったまま、ITエンジニアとして転職したい方には「EBAエデュケーション」が選択肢です。企業が求めるエンジニア像に合わせたカリキュラムで、実務直結のスキルを習得できます。

ITエンジニア転職・EBAエデュケーション →

VBAスパゲッティをAIとPandasで保守性向上

VBAにおけるスパゲッティコードが生まれたのは、開発者がExcelの画面を直接操作する感覚でコードを書いてしまうことが一因だと思われます。あるセルを選択し、コピーし、別のセルに貼り付ける。この一連の動作がそのままコードになります。しかし、Pythonの`pandas`はExcelのインターフェースを介さず、裏側でデータを効率的に処理します。このパラダイムシフトによって、コードは劇的に短く、そして読みやすくなりました。どこで何がどう計算されているのか、ロジックの流れが明確に目で追えます。もし修正が必要になっても、原因箇所を特定し、影響範囲を限定して直すことが容易になるはずです。これはまさに「保守性の高いコード」そのものでした。あのVBAの爆弾を、AIはわずか数分で無毒化してくれたのです。

AIによるレガシー変革、設計と仕事の未来

今回のVBAからPythonへの変換体験は。私の仕事に対する認識を根本から揺るがしました。かつては個人のスキルや経験に依存し。「あの人がいないと回らない」と放置されがちだったレガシーシステム。それを「AIに渡す」という選択肢が加わったのです。AIは単なる自動翻訳機ではありません。人間の意図を汲み取り、VBAの泥臭い処理を。より現代的で洗練されたPythonの書き方に再構築できます。これは、AIがプログラミング言語の文法だけでなく。その背後にある「より良い設計」の概念まで理解している証拠ではないでしょうか。

AIによる属人化解消とITスキル向上

次に、これまで、総務や経理の現場で「こんなに便利なのに。もし壊れたら誰にも直せない」という漠然とした不安を抱えていた人は少なくないはずです。その不安が。日々の業務効率を上げるためのツール開発をためらわせる要因にもなっていました。しかしAIの登場は、そうした壁を打ち破る可能性を秘めています。設計書のないVBAであっても、AIがその動作を解析し。より堅牢で透明性の高いコードへと昇華させます。これにより、特定の担当者が退職しても業務が滞るリスクは劇的に軽減されるでしょう。属人化の解消は、組織全体の生産性向上に直結する重要な課題です。

AIで変わる非エンジニアの学習と業務課題

AIとの協業は、私たち非エンジニアの会社員にとって。新たなスキル獲得の機会でもあります。AIが生成したPythonコードを見ることで。モダンなプログラミングのベストプラクティスを学ぶことができます。AIが提示するコードが「なぜ」優れているのか、その理由を理解しようとすることで。私たちのITリテラシーやプログラミング思考力は自然と高まっていくはずです。AIは魔法の杖ではないかもしれませんが。少なくとも「これは無理だ」と諦めていた多くの業務課題に。新たな光を当てる強力なツールとなります。VBAの「神エクセル」を恐れる時代は、もう終わりを迎えるのかもしれません。

AIが拓く非エンジニアのプログラミング

これまで、総務や経理の現場で「こんなに便利なのに。もし壊れたら誰にも直せない」という漠然とした不安を抱えていた人は少なくないはずです。その不安が。日々の業務効率を上げるためのツール開発をためらわせる要因にもなっていました。しかしAIの登場は。そうした長年の停滞感を打ち破る大きなきっかけになったと強く感じています。プログラミングの知識がない私のような人間でも、AIを頼ることで。これまで手出しできなかった領域に踏み込めるようになったのです。

AIが変えたプログラミング観とPythonコード

一方で、以前は。プログラミングは専門家だけが学ぶべき特殊なスキルだと考えていました。分厚い技術書を読み、エラーと格闘し、夜遅くまでコードと向き合う。そんなイメージしか持っていませんでしたから。自分には縁のない世界だと決めつけていたのです。しかし、今回AIと対話しながらVBAをPythonに変換する過程で。その認識は大きく変わりました。AIは、まるで優秀な先生のように、私が書いたVBAコードの意図を汲み取り。より洗練されたPythonの書き方を提案してくれました。その提案は、単なる直訳ではなく。データ処理の概念そのものをモダンな形に再構築してくれるものでした。

AIコードの感動と人の役割

もちろん、AIが生成したコードを鵜呑みにするだけでは不十分です。生成されたPythonコードを読み解き、それが本当に元のVBAの意図通りに動くのか、さらに改善できる点はないかを確認する作業は、やはり人間である私の仕事になります。そのためには、Pythonの基本的な文法や、`pandas`のような主要なライブラリの概念

約3分が経過しました。画面に表示されたのは、期待をはるかに上回るPythonコードの束でした。

VBAのVBE画面とはまるで違う、整然としたインデント。変数名も「df_input」「df_output」といった。データフレームの操作を前提とした分かりやすい名前になっています。そして、何よりも感動したのは。pandasやopenpyxlといったライブラリが適切に活用されていたことです。これまで何時間も睨みつけても理解できなかった「謎のバグ対応(2018年)」のような怪文書はどこにもありませんでした。代わりに、データ読み込みから加工、集計、そして出力までの一連の流れが。まるで物語のように紡ぎ出されていたのです。

AIで神エクセルからの解放

そのため、

もちろん。AIが生成したコードが100%完璧に動く保証はありません。しかし、あのスパゲッティコードの山から。ここまで整理された形で「正解に近い」コードが提示されたことに。私は大きな衝撃を受けました。何日もかかると覚悟していた改修作業が、たった数分で、しかも未来につながる形で。具体的な一歩を踏み出せたのです。これは単なるコード変換ではなく。私自身のプログラミング学習における「ブレークスルー」だと感じました。

AIとPythonで神エクセル解放

関連リンクとチェックリスト

学習サービスとアンケート

このスキルを活かしてさらに前へ進むなら

Pythonや自動化スキルを体系的に習得して、ITエンジニアとしてのキャリアを切り開きたい方には「Enjoy Tech!(エンジョイテック)」が選択肢のひとつです。

プログラミングスクール Enjoy Tech!(エンジョイテック) →