村中 直樹 氏
クレッシェンド 代表取締役


 企業情報システムをExcelを使って開発する専門会社を創業してから7年が経過した。これまでのべ400以上のExcelシステムに関わってきた経験を踏まえ、保守できない「Excelレガシー」が発生する「原因と対策」を本欄で紹介していきたい。今回は、「Excelマクロの自動記録」に関する問題と対策を取り上げる。

 Excelマクロの自動記録とは、ICレコーダに音声を記録するような感覚で、Excelの操作手順をそのままマクロとして記録(作成)できる機能である。初心者でも気軽に使えることから広く活用されているが、気をつけないと思わぬ落とし穴にはまってしまう。

VBAコードが数千行

 A社は学術文書の抄録と索引の作成を請け負う業務を手がけている。実際の作業は、学術文書の対象分野に応じて、外部の専門家に委託する。委託先の専門分野が多岐に渡る、一定期間内に委託できる量が限られている、といった特徴がある。例外的な処理が多くなり、業務の流れがかなり複雑になっていた。

 こうした状況の中、一人のベテランがExcelを利用し、対象分野別に委託者を検索したり、納期や進捗状況を管理できるシステムを構築した。このシステムは、主にマクロの自動記録機能を使って構築されてきた。たとえば、受託一覧データの対象行を選択してボタンを押すと、作業依頼票に転記する、といった作業が自動化されている。

 ただし、選択範囲を変更する必要が生じるたびに、新たなマクロが自動記録されてしまう。ちょっとした見直しの都度、自動記録マクロはどんどん増えていった。その中には、すでに使わなくなった古いマクロもあったが、どれが不要なマクロか分からないため、放置された。

 累々と積もったマクロの山は、全体で5Mバイト近い巨大なファイルとなった。こうなると、マクロを作成した本人ですら、全体を把握することは不可能になってくる。その後しばらくして、この担当者は定年退職を迎えた。社内にExcelマクロが分かる人材がいなかったため、マクロ機能については後任者に引き継げなかった。

 業務内容の変化に合わせて、作業の手順を変える必要が出てきたが、Excelシステムに手を加えたくてもどこを変更すれば良いのか見当がつかない。ついには、業務そのものがExcelシステムの機能に縛られてしまう事態になった。

 この時点で筆者はA社から相談を受けた。早速、A社のExcelシステムを調査したところ、マクロだけでVBAのコードが数千行あった。Excelシステムの画面上には、マクロを呼び出す「ボタン」が100個近く並んでおり、どれが何のマクロか区別がつかない。さらに、実際に業務に使っているボタンは限られているはずだったが、人によって使っているボタンが異なるため、どれが本当に必要な機能なのか、また正しい業務を遂行するにはどの順番でどのボタンを押すべきかが、状況となっていた。

思いつくままに機能を実装したことが敗因

 A社の例は、Excelレガシー問題の典型と言える。すなわち、思いつきで機能を実装した結果、何の目的で作った機能なのか、それぞれの変数が何を意味しているか、機能を実装した本人ですら分からなくなる。試しに作ってその後は一切使っていない機能も多数残っている。使わなくなった機能を「何かあったらいけない」という理由で残し続けたためExcelシステムが肥大化する。Excelシステムのコピーが横行しており、すべてのファイルに機能変更が反映できておらず、様々なバージョンのExcelシステムが混在する。

 筆者は、A社にExcelを使って一からシステムを開発し直すことを提案した。既存システムに手を加えるのは無理と判断したからだ。手直しには、既存システムの中身を正確に把握する必要があるが、引き継ぎもなくExcelのブックやワークシートだけが残された状態では難しい。式やマクロを解読しようとしても意味が読み取りにくい。そもそも利用していない機能が多数含まれており、各機能を分析しても作業が無駄になってしまう。

 システムの作り直しを機に、A社と共に業務フローの見直しを行った。その結果、それまで例外としてきた処理のいくつかが共通化できることが分かり、実装すべき機能の数は当初予定の半分以下で済むことが分かった。

 こうして、業務の流れもシンプルとなり、関わっている社員もその意味を理解しながら業務を進められるようになった。また、新システムの機能が必要なものに絞り込まれたことから、スムーズに移行することができた。システム概要や機能についてのドキュメントが作られていることは、言うまでもない。

4つのルールを守ろう

 A社が直面した問題は、以下の4点に注意すれば防ぐことができる。

開発・テスト用のExcelシステム(ブックやワークシート)と、本番稼働用のExcelシステムを明確に分ける
開発・テスト用のExcelシステムで一定の品質基準をクリアした場合にのみ、本番稼働用に移行する。品質チェックを厳密に行うことで、安易なバージョンアップも防げる
機能を実装あるいは変更したら、その都度、どこに手を入れたか分かるように記録を残す。Excelシステムのファイルの中に、変更履歴用のワークシートを用意し、そこに概要をメモする程度で十分である
本番稼働用のExcelシステムをバージョンアップしたら、利用者全員が既存のExcelシステムをいったん破棄する。その後、最新版のExcelシステムを配布して利用を開始する

 Excelレガシー問題は、Excel自体が原因ではない。ルールを定めて使いさえすれば、問題の大半は回避できる。


村中 直樹 氏(クレッシェンド 代表取締役)
 金融機関の情報システム部門等でシステム開発に従事。約20年前にExcelと出会って以来、その機能と利便性に惚れ込み、日常の仕事にExcelを活用。2000年に独立してExcel専門の受託開発会社クレッシェンドを設立、今に至る。