前任者のExcelマクロが読めない。コメントも設計書もない属人化コードを、AIで解読した実録

コメントゼロ、引き継ぎコードの絶望

引き継ぎ初日、手渡されたExcelファイルを開いて言葉を失った。前任者は「これが毎月の締め処理です」と笑顔で言い残し、翌日退社していった。Visual Basic Editor(VBE)を開くと。灰色の画面に1,000行を超えるコードがびっしりと詰まっていた。スクロールバーをいくら下げても終わらない。背中に冷たい汗が伝うのを感じた。コードの中身はさらに絶望的だった。

Sub名は「Main_syori」。これはいけない。変数を探す。SIME_F、KARI_CNT、TMP_RNG。ローマ字の略語が暗号のように並んでいる。処理が数珠つなぎになっており、どこで何をしているのか見当もつかない。何よりも恐ろしいのは。1,000行の中で日本語のコメントが1行も存在しないことです。

書いた本人にしか読めない完全な属人化コード。そして、その本人はもう社内にいありません。

動かせない月次マクロの重圧

まず、このマクロは単なる集計ツールではない。毎月15日の月次締め処理を自動化する、経理の生命線だ。少しでも誤作動を起こせば、全部門の売上データが狂う。改修など恐ろしくて手が出せない。下手に触ってエラーで止まったら、全社に頭を下げて回る羽目になる。先輩社員は「とりあえず動いているうちは触るな」と無責任なアドバイスをくれた。放置できるならそうしたい。

自分が担当である以上、エラーが起きた瞬間に責任を問われるのは自分だ。15日が近づくにつれて、胃の奥が鉛のように重くなっていく。マクロのボタンを押す手が震える未来が容易に想像できた。中身がわからないブラックボックスに会社の命運を預ける恐怖。この詰み状態をなんとかしなければ、毎月この重圧に耐えることになる。

すがる思いで開いたのは、ブラウザ上のAIチャット画面だった。意を決して、Claude AIにVBAコードの全文を貼り付ける。

VBA解析依頼、AIの不安と驚異の回答

入力したプロンプトは単純だ。「このVBAコードは何をしているか、処理の流れを日本語で説明してください。変数名の意味も推測してください」
送信ボタンを押した直後。画面には一瞬ローディングのアイコンが出た。ほんの数十秒待つ間、キーボードに置いた手が冷たくなっていた。「AIでも解読不能です」と返ってきたらどうしようと本気で怯えていた。時計の針が少し進む。

送信からわずか30秒後。画面に滑らかな日本語の解説が次々と出力され始めた。

ブラックボックスの正体

次に。出力されたテキストを見て、思わず息を呑んです。

そこには。暗号のようだったコードの真の姿が記されていた。処理の流れは大きく3つに分かれているという。Sheet1から当月の売上データを取得する。部門別に集計してSheet2に書き出す。最後に印刷範囲を設定してPDF化する。あの謎の変数名についても、明確な推測が提示された。SIME_Fは締め処理フラグ。TrueかFalseを格納している。KARI_CNTは仮集計用のカウンター変数。

TMP_RNGは一時的なセル範囲の格納用。霧が晴れるように全体像が見えた。わからないから怖い。得体の知れないブラックボックスだから胃が痛くなったのだ。中身がただの「売上集計とPDF化」だとわかった瞬間、恐怖の半分は消え去っていた。未知の怪物が、ただの手間のかかる事務作業に変わった瞬間です。

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

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

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

データの安全地帯確保

全体像がわかっても、安易に実行ボタンを押すのは危険すぎる。次に知るべきは、このコードが牙を剥くポイントです。

一方で、私は再びAIに問いかけた。「このコードの中で。誤動作したときに最もデータへの影響が大きい処理はどこですか?実行前に取るべきバックアップ手順も教えてください」
AIは容赦なく急所を指摘してきた。中盤にある「セルの全消去処理」だ。条件分岐を間違えると。消してはいけない過去の売上データまで白紙に戻すリスクがあるという。手動でデータを復旧しようと思えば、数日徹夜しても終わらない量だ。対策として。

実行直前に作業対象シートを別ファイルとして丸ごとコピー保存する手順が提示された。これなら、マクロが暴走しても直前の状態にすぐ戻せる。テスト実行の安全地帯が、ついに確保された。

AIでVBAコードを業務手順書化

バックアップ戦略が立てば。あとはコード自体をメンテナンス可能な状態にするだけだ。パネル/vba-code-before-after-comments.png
プロンプトに「このVBAコードの各処理にわかりやすい日本語コメントを追加したコードを出力してください」と打ち込む。数秒後、出力されたコードは別物になっていた。すべての変数宣言、処理ブロック、分岐条件の上に。

緑色の日本語コメントが添えられている。「ここは部門Aの売上を集計するループ処理」
「ここでフラグをリセットする」
新しく生成されたコードをVBEに貼り付けたとき。思わず「おぉ」と声が出た。ただのアルファベットの羅列だったものが、意味を持った業務手順書に変わったのだ。自分が引き継いだのは「呪い」ではなく。ただの「未完成の道具」だったのだと確信した。属人化コードが、誰でも読めるコードに昇華した。

これで次任者に引き継ぐときも、あの恐怖を味わわせずに済む。

VBAを動かす。変身の瞬間

コードの構造が手に取るようにわかる。バックアップも完璧だ。ここで、私は一つの実験をしたくなった。最も意味不明だった変数名「SIME_F」を。「isShimeCompleted」というわかりやすい名前に変更してみた。たった1行の改修だ。手元のバックアップファイルを確認し、深呼吸をしてから実行ボタンを押す。画面が数回ちらつき、指定されたフォルダに真新しいPDFが生成された。

中身の数値は完璧に合っている。動いた。自分で直したコードが、業務を完遂した。ただ怯えるだけだった事務員が、VBAを「触れる人間」へと変わった瞬間だった。

AI使いこなしに必須の基礎知識

そのため。AIは魔法の杖のように見える。しかし、落とし穴もある。AIはコードを「解読」してくれるが。その結果が100%正しいか「判断」するのは人間の仕事だ。今回、AIが提示した危険箇所やバックアップ戦略が腑に落ちたのは。過去に少しだけマクロを触った記憶があったからだ。もしループ処理や条件分岐の概念すら知らなければ。AIの出力したコードをそのまま貼り付けて。

より致命的なエラーを引き起こしていたかもしれない。最強の補助ツールを使いこなすには、使い手自身に基礎知識が求められる。Amazonで評価の高いVBA入門書を一冊手元に置いておくのは賢明な選択だ。本気で業務効率化のスキルを定着させたいなら。侍エンジニアのようなスクールで体系的に学ぶのも強力な武器になる。AIというブースターに点火するためには、土台となる知識が不可欠です。

AIで負の遺産コード解読。Python自動化

前任者が残した負の遺産に立ち向かう方法は確立された。手順は3つに集約される。コード全文をAIに貼り「何をしているか」を聞く。「最も危険な処理」を特定して確実なバックアップ戦略を立てる。コメント自動生成で属人化コードを脱属人化する。この手順を踏めば、どれほど読めないコードでも。コントロール可能な業務ツールへと変貌する。未知の恐怖は、解読と対策によって打ち破れる。

VBAの解読に成功したら、次はより高度な自動化へ進む道が開ける。脱Excelを果たし。Pythonを用いた自動化の世界へ足を踏み入れる準備が整ったはずだ。次のステップへの扉は、すでに開いている。

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

ち込んだ。まるで私がプログラミングの先生になったかのように、AIはコードの変更点を逐一解説しながら、コメント付きのVBAコードを生成してくれました。出力されたコードを見ると、Sub名の「Main_syori」の下に「’ メイン処理:月次締め処理を実行します」とコメントが追加されています。変数「SIME_F」の隣には「’ 締め処理フラグ(True: 締め処理実行中、False: 通常状態)」と書かれていました。これなら、未来の私がこのコードを見たとしても、何をしているのか一目瞭然です。

さらに、AIは処理のブロックごとに詳細なコメントを付けてくれました。「’ ステップ1: Sheet1から当月の売上データを取得します」「’ ステップ2: 部門別に売上を集計し、Sheet2に書き出します」「’ ステップ3: Sheet2の印刷範囲を設定し、PDFファイルとして保存します」。まるで丁寧に書かれた業務手順書を読んでいるかのような安心感がありました。このコメント付きコードがあれば、もうあの暗号のような文字列に怯える必要はありません。もしエラーが出たとしても、どの部分で何が起きているのか、以前よりもずっと早く特定できる自信が湧いてきました。

しかし、これで終わりではありません

しかし、これで終わりではありません。コメント付きコードができたからといって、いきなり本番環境で実行するのはあまりにも無謀です。私はAIに最後の質問を投げかけました。「このVBAコードを安全にテスト実行するための具体的な手順を教えてください。また、テストデータを準備する方法も知りたいです」AIはすぐに、私のようなプログラミング初心者でも理解できる、具体的なステップを提示してくれました。

まず、本番用のExcelファイルとは別に、全く同じ構造の「テスト用ファイル」を作成すること。そして、そのテスト用ファイルに、実際のデータに近いダミーデータをいくつか入力するようアドバイスしてくれました。例えば、売上データであれば、いくつかの部門、異なる日付の売上を適当に入力してみるのです。これにより、マクロが様々なパターンで正しく動作するかを確認できるとのことでした。

さらに、テスト実行中は、VBEのデバッグ機能(ステップ実行やブレークポイント)を活用し、処理が意図した通りに進んでいるか一行ずつ確認することを推奨されました。正直、デバッグ機能なんて聞いたこともありませんでしたが、AIが「デバッグ機能の使い方」まで丁寧に説明してくれたので、少しずつ理解することができました。

テスト環境の構築とデバッグ方法を理解したことで

テスト環境の構築とデバッグ方法を理解したことで、私の不安はさらに軽減されました。まるで、真っ暗な洞窟の奥に、頼りになるガイドが明かりを灯してくれたような感覚です。これでようやく、私でもこのブラックボックスマクロをコントロールできるかもしれない、という希望が見えてきました。プログラミングの「プ」の字も知らなかった私が、まさかVBAコードを「理解」し、「改修」する一歩手前まで来るとは、数週間前の私には想像もできないことでした。AIの助けがなければ、私は今も毎月15日に胃を痛め、冷や汗をかきながらマクロのボタンを押していたことでしょう。

今回の経験を通して、私はプログラミングという未知の世界に対する漠然とした恐怖感が薄れました。VBAコードがただの「命令文の集まり」であり、AIという強力なツールを使えば、その命令文の意味を解読し、さらには改善することさえ可能だと知ったのです。もちろん、プロのエンジニアの方々から見れば、私のやっていることはごく初歩的なことかもしれません。しかし、私のような完全な文系事務職にとっては、これはとてつもない進歩でした。AIは、プログラミングの学習コストを劇的に下げ、私のような非エンジニアにも、自動化の扉を開いてくれたのです。

これからも、このAIという強力なパートナーと共に

これからも、このAIという強力なパートナーと共に、職場の「めんどくさい」を手放していく旅を続けたいと思っています。今回の成功体験は、私にとって大きな自信となりました。もし、あなたも私と同じように、職場のブラックボックスマクロに悩まされているのであれば、ぜひ一度AIに相談してみてください。きっと、想像以上の助けになってくれるはずです。プログラミングの知識がなくても、AIはあなたの心強い味方になってくれます。そして、その一歩が、あなたの仕事の景色を大きく変えるきっかけになるかもしれません。

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

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

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

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

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

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