Excel・VBA

作った人しか分からないVBAを保守できる状態に戻す方法

「作った人しか分からない」と属人化してしまったVBAやExcelマクロを、社内の誰もが安全に保守・運用できる状態へと戻すための具体的な手順やドキュメント化のコツを徹底解説します。

公開日:2026年7月3日 更新日:2026年7月3日
作った人しか分からないVBAを保守できる状態に戻す方法
目次

この記事で分かること

  • 作った人しか分からないVBAが引き起こす保守リスクと原因
  • 属人化したマクロを解読し、保守可能な状態へ戻す具体的な手順
  • 自社での対応が困難な場合に外部業者へ相談する安全な方法

なぜVBAはブラックボックス化してしまうのか

社内の業務効率化に大きく貢献するExcel VBA(マクロ)ですが、長年運用していると「特定の担当者(作った人)しか中身が分からない」という属人化(ブラックボックス化)の問題が頻繁に発生します。この状態を放置すると、作成者の異動や退職、あるいは突然のパソコントラブル時に、誰もエラーを直すことができず業務が完全にストップしてしまう重大なリスクを抱えることになります。

VBAが作った人しか分からなくなる最大の原因は、設計書や仕様書といった「ドキュメントが存在しないこと」にあります。現場の担当者が自身の業務を楽にするために独自に組み上げたマクロは、開発のプロが書くような標準的なルールに沿っていないことが多く、作成者独自の「癖」が強く反映されます。さらに、業務の変更に合わせて「とりあえず動くように」と場当たり的なコードの継ぎ足し(ツギハギ)を繰り返すことで、作成者本人でさえ数ヶ月後には解読できないほど複雑怪奇なプログラム(いわゆるスパゲッティコード)になってしまうのです。

このようなブラックボックス化したVBAを保守できる状態に戻すためには、いきなりコードを書き換えようとするのではなく、まずは「現状の動きを正確に把握し、情報を整理すること」が不可欠です。次項から、安全に保守体制を再構築するための具体的なステップを解説します。

修正で済むか、作り直すべきか迷ったら

現状を確認し、修正・保守・刷新のどれが現実的かを整理します。

保守できる状態に戻すための事前準備と現状把握

作った人しか分からないVBAを解明していくにあたり、何よりも優先すべきは「既存のファイルを絶対に壊さないこと」です。安全に調査を進めるための事前準備と、外側から見た仕様の把握方法について説明します。

ファイルの保管場所特定と完全なバックアップ

まずは、現在実務で稼働している最新のExcelファイル(.xlsm等)がどこに保存されているかを特定します。特定できたら、絶対にそのファイルを直接開いてコードを触ってはいけません。必ずファイルをコピーし、今日の日付を入れた「バックアップ用フォルダ」に保存してください。調査やテストはこのコピーしたファイル(テスト用ファイル)で行うのが鉄則です。万が一操作を誤ってデータが消えたりマクロが壊れたりしても、バックアップがあればすぐに元の状態に復旧できます。

業務フローと入力・処理・出力の整理

VBAのコード(中身)を見る前に、まずは「外側からの動き」を整理します。そのマクロを普段使っている担当者にヒアリングを行い、以下の表のように「インプット」「プロセス」「アウトプット」の3つの要素に分けて機能をリストアップします。これが、簡易的な仕様書の土台となります。

整理する項目 調査する具体的な内容・着眼点 なぜ必要なのか(目的)
インプット(入力データ) 手入力か、別システムのCSVか、別シートからの転記か。保存場所はどこか。 元データの形式や参照元が変わった際のエラー原因を特定しやすくするため
プロセス(実行トリガー) どのシートの、どのボタンを押すとマクロが動くのか。 プログラムがどこからスタートするのか(入り口)を見つけるため
アウトプット(出力結果) 請求書のPDF化か、集計表の作成か、別ファイルへの保存か。 マクロの最終目的を把握し、修正時のゴールを明確にするため

この表を埋めるだけで、プログラミングの知識がなくても「このマクロは販売データを取り込んで請求書を作るためのものだ」という全体像(仕様)が社内で共有でき、一部の属人化を解消することができます。

VBAコードを紐解きドキュメント化するステップ

外側からの動きが整理できたら、次にテスト用ファイルを使ってVBAの内部構造を確認し、誰もが理解できる状態(ドキュメント化)へと進めていきます。専門知識がなくても、以下の手順で少しずつ解明していくことが可能です。

VBEの起動とパスワードロックの確認

Excelを開いた状態で「Alt + F11」キーを押し、VBAの開発画面であるVBE(Visual Basic Editor)を起動します。左側の「プロジェクト」ウィンドウにあるファイル名をダブルクリックし、パスワード入力画面が出ないか確認します。パスワードがかかっている場合、作成者しか知らない状態であれば、過去の資料から探し出すか、後述する外部業者への相談が必要になります。パスワードがかかっていなければ、次のステップへ進みます。

コードの開始地点を特定しコメントを追記する

何千行もあるコードを最初から順番に読む必要はありません。先ほどの事前準備で確認した「マクロを実行するボタン」を起点に調査します。Excelシート上のボタンを右クリックし、「マクロの登録」を見ると、そのボタンに紐づくマクロ名(例:「集計処理_Click」など)が分かります。VBE内でその名前を検索し、処理のスタート地点を特定します。

コードを読み解く際、既存のコード自体は絶対に書き換えないでください。代わりに、シングルクォーテーション(’)から始まる「コメント」機能を活用します。コードの上に「’ ここからデータを取り込む処理」「’ ここでPDFを保存している」といった日本語のメモ(コメント)を追記していきましょう。このコメントを残す作業こそが、作った人しか分からない暗号を、他の社員でも読める「保守可能なコード」へと変える最も有効な手段です。

簡易的な運用マニュアルの作成

コメントの追記と並行して、後任者や他の社員向けに簡易的な「運用マニュアル」を作成します。マニュアルには、専門的なプログラムの解説は不要です。「実行前に確認するフォルダの場所」「ボタンを押す順番」「よく出るエラーメッセージとその時の対処法(誰に連絡するかなど)」といった実務的なルールをWordや社内Wikiなどにまとめておきましょう。

属人化を再発させない保守・運用ルールの策定

せっかくVBAを解読し、マニュアル化できても、運用ルールがなければすぐにまた「作った人しか分からない状態」に戻ってしまいます。継続的な保守体制を構築するために、以下のルールを社内で徹底しましょう。

  • 無断でのコード変更の禁止:担当者が良かれと思って独自に機能を追加することを禁じます。改修が必要な場合は、必ず関係者に共有し、テスト環境で行うルールを設けます。
  • バージョン管理の徹底:ファイルを更新する際は、ファイル名に「_v1.2」や「_20231001」などのバージョンや日付を付け、どのファイルが最新で、どこを変更したのかを履歴として残すようにします。
  • エラー発生時のエスカレーションルートの確立:マクロが止まった際、現場の担当者が無理にいじって壊してしまうのを防ぐため、「エラー画面のスクリーンショットを撮り、システム管理部門(または外部の保守業者)へ連絡する」という明確なルールを定めます。

修正で済むか、作り直すべきか迷ったら

現状を確認し、修正・保守・刷新のどれが現実的かを整理します。

自力でのVBA解読が難しい場合の安全な対処法

ここまで自社でVBAを保守できる状態に戻す方法を解説しましたが、現実的には「コードが長すぎて素人には全く解読できない」「Accessなどの他のシステムと複雑に絡み合っていて手が出せない」「そもそもVBAのパスワードが分からず中身が見られない」といったケースも多々あります。自社での対応が限界を超えていると感じた場合は、無理に調査を進めて業務を止めてしまう前に、既存マクロの保守や改修を得意とする外部の開発会社へ相談することを強くお勧めします。

外部業者へ相談する際は、「現状のExcelファイル」と、本記事で作成した「入力・処理・出力のリスト」をセットにして渡すと非常にスムーズです。ただし、個人情報や売上などの機密データが含まれる場合は、顧客名を「テスト太郎」、金額を「1000」などに書き換えた「ダミーデータの調査用ファイル」を作成してお渡しください。

実際のファイルを見せることで、プロのエンジニアがコードの複雑さや依存関係を瞬時に解析し、「この部分を整理すれば保守可能になる」「いっそ新しい仕様で作り直した方が長期的にコストが安くなる」といった、客観的かつ適正な解決策を提示してくれます。一人で抱え込まず、まずは専門家に既存ファイルを見せて現状を診断してもらうのが一番の近道です。

作った人が既に退職しており、VBAのパスワードも分からない状態ですが保守を依頼できますか?

はい、既存システムの保守を得意とする専門の開発会社であれば対応可能なケースが多くあります。パスワード解析ツールを用いたロックの解除や、それが技術的に不可能な場合でも、現状の「入力データ」と「出力結果」の動きから仕様を逆算し、全く同じ機能を持つ新しいマクロとして作り直す(リプレイスする)などの解決策をご提案できます。お問い合わせの際に「パスワードが不明である」旨を事前にお知らせください。

プログラミング未経験の社員が保守担当を引き継ぐことは可能でしょうか?

日常的な運用と一次対応(エラー画面の記録やマニュアルに沿った復旧作業)であれば、未経験者でも十分に可能です。本記事で紹介した「簡易マニュアル」を作成することで、誰でも安全に運用できる状態を作れます。ただし、業務変更に伴うコードの書き換えや、複雑なエラーの根本解決を未経験者が行うのはリスクが高いため、「運用は社内で行い、コードの修正・改修は外部のパートナー業者に任せる」という分業体制を構築するのが最も安全で確実な方法です。

既存のマクロを解読して保守するのと、新しく作り直す(リプレイス)のではどちらがコストを抑えられますか?

マクロの規模やコードの複雑さ(スパゲッティ化の度合い)によります。軽微な修正であれば既存コードの解読・保守の方が安く済みますが、あまりにもツギハギだらけで解読に膨大な時間がかかる場合や、古いバージョンのExcelで作られていて最新環境に合わない場合は、ゼロから作り直した方が結果的にコストが安く、その後の保守も容易になるケースがあります。まずは既存のファイルをお見せいただき、専門家による事前診断を受けることで最適なアプローチを判断できます。

外部の専門業者に保守や改修を相談する際、どのような情報を渡せばスムーズですか?

最も重要なのは「現状のExcelファイルそのもの」を見てもらうことです。言葉で説明するよりも、コードを直接確認する方が確実で早いためです。情報漏洩を防ぐため、機密情報をダミーデータに書き換えたファイルを作成してお渡しください。あわせて、「どこでエラーが出るか」「どの業務で使っているか」の簡単なメモを添えていただくと、より迅速かつ正確なお見積もりが可能になります。

動作が非常に重く、頻繁にフリーズするマクロも調査・改善できますか?

可能です。VBAが重くなる原因の多くは、無駄なループ処理や、画面の更新停止処理(ScreenUpdating)が抜けているなど、コードの書き方に問題があるケースです。プロがコードを解析し、適切な配列処理などに書き換える(リファクタリングする)ことで、処理速度が劇的に改善することがよくあります。ファイルサイズや扱うデータ量がExcelの限界を超えている場合は、AccessやWebシステムへの移行プランをご提案することも可能です。

Excel・VBAについてのご相談

Excel・VBAについてのご相談を受け付けています

現状の課題をお聞きし、最適な進め方をご提案します。まずはお気軽にご相談ください。