Excel VBA(マクロを含む)による業務の属人化を解消するためのケース別5つの方法とは

Excel VBA(マクロを含む)は、定型業務の自動化により作業時間を大幅に短縮し、人的ミスを削減するなど、業務効率化に大きく貢献する強力なツールです。しかしその一方で、作成したVBAが特定の担当者にしか理解・修正できない「属人化」という深刻な問題を引き起こす大きな要因ともなっています。属人化は、担当者の異動や退職時に業務の引き継ぎを困難にし、最悪の場合、業務プロセス全体の停滞や崩壊を招くリスクをはらんでいます。
本稿では、属人化が起こるメカニズムと属人化による経営リスクを考察した上で、属人化を解消する方法をケース別に5つ提案します。
※本稿では、VBA (Visual Basic for Applications)とマクロは、本来別のものですが、便宜上同質のものとして取り扱います。

属人化が発生する主な原因

Excel VBAが属人化しやすい背景には、いくつかの複合的原因があります。

  • 高度な専門知識の要求
    Excelマクロ、特にVBAを用いた複雑な処理の構築には、プログラミングの知識とスキルが必要となります。これにより、組織内で対応できる人材が特定の「Excel職人」に限られてしまいます。
  • 業務のブラックボックス化
    VBAが組み込まれたExcelファイルは、その処理プロセスが外部から見えにくい「ブラックボックス」と化しやすいです。アウトプットされる結果のみが重視され、どのようなロジックでデータが処理されているのかという制作者の意図やプロセスが共有されないまま運用されていることが多く見受けられます。
  • 作成者の主観に基づく設計
    ファイルの作成が個人の裁量に委ねられるため、作成者本人にしか理解できない変数名や処理フロー、独自の記号などが用いられがちです。これは、他者がコードを解読し、メンテナンスすることを著しく困難にします。
  • 手軽さ故の無計画な開発
    Excelは手軽に開発を始められるため、予算や工数をかけずに場当たり的な改修が繰り返されることが多いという特徴があります。現在ではアジャイル開発が主流の一つとなっていますが、それとは似て非なるもの。無計画にコードは複雑化し、当初の設計思想からかけ離れたファイルが生まれてしまいがちです。

属人化がもたらす経営リスク

属人化したExcel VBAは、単なる非効率性を超え、事業継続を脅かす重大な経営リスクとなり得えます。

  • 業務効率の低下
    特定の担当者が不在の場合、業務が完全に停滞する可能性があります。また、非効率なVBAが使われ続けていても、他の従業員はその問題に気づくことすらできないため、組織全体の生産性が低下します。
  • 引き継ぎの失敗
    属人化の最大のリスクは、担当者の異動や退職時に発生します。特に退職してしまった場合はVBAの仕様を理解できず、改修が不可能になります。結果として、業務を手作業に戻したり、最悪の場合は業務自体が遂行不能に陥ります。ある調査では、情シス部門の48.5%が「メンテナンス不可能なExcelファイルがある。」と回答しており、この問題の深刻さが伺えます。
  • ビジネス機会の損失
    社内外環境の変化(社内制度の変更、取引先のデータ形式変更、法改正など)に迅速に対応できないこと。例えば、基幹システムの変更に伴い入力データの形式が変わっただけで、既存のVBAが機能しなくなるケースがあります。
  • 品質のばらつきとミスの増大
    担当者によって成果物の品質が左右され、安定した業務遂行が困難になります。また、ブラックボックス化したVBAの内部でエラーが発生しても、誰も気づかず、誤ったデータに基づいた意思決定が行われる危険性があります。

属人化を解消する方法

Ⅰ.社内SEが複数人いて、従業員のITスキルが高い企業の場合

この場合は、「VBAの標準化」「ドキュメント化」「スキルアップ支援」の3つの施策により、Excel VBAを駆使することで、低コスト・短時間で痒い所に手が届く素晴らしい業務効率化に大きく貢献できるでしょう。

1.VBAの標準化

標準化されたVBAは、再利用性が高く、メンテナンスが容易になるため、属人化の解消に大きく貢献します。

  • 変数宣言の強制
    モジュールの先頭にOption Explicitを記述し、すべての変数の宣言を義務付け、タイプミスによる意図しない変数の生成を防ぎます。
  • 命名規則の統一
    変数名、関数名、シート名などの命名規則を統一し、一貫性のあるコードを作成します。例えば、変数には「キャメルケース」、定数には「アッパースネークケース」を用いるなど、一貫したルールを適用します。
  • コメントの活用
    処理の目的や複雑なロジックの部分には、後から読む人が理解しやすいようにコメントを記述します。
  • インデント(字下げ)
    If文やForループなどの制御構造に応じてインデントを適用し、コードの構造を視覚的に分かりやすくします。
  • 共通処理の関数化
    複数のVBAで共通して使用される処理を関数として定義し、共通化します。
  • 設定ファイルの利用
    VBAで使用する各種設定値をハードコーディングするのではなくパラメータ化し、設定ファイルや設定シートに記述することで、変更を容易にします。
  • エラー処理の統一
    エラーが発生した場合の処理方法を統一し、エラーログの出力方法などを標準化します。

2.ドキュメント化

マクロの仕様や使い方に関するドキュメントを作成することは、属人化を解消するために非常に重要です。

  • 業務マニュアルの作成
    運用手順を詳細に記したマニュアルを作成します。
    • 記載事項
      • ファイルの制作意図と目的
      • 具体的な操作手順(ボタンのクリック箇所など、画面キャプチャを多用して視覚的に示します)
      • 入力データの仕様(形式、場所など)
      • 出力結果の見方と活用方法
      • 専門用語や独自の項目の定義
      • 他のシステムとの連携関係
    • 管理方法
      作成したマニュアルは、共有フォルダなど誰もがアクセスできる場所に保管し、業務内容に変更があった際は必ず最新の状態に更新します。
  • 修正履歴・仕様変更の記録
    システムの変更履歴を記録することで、なぜ現在の仕様になっているのかという経緯を後任者が追跡できるようにします。修正日、修正者、修正内容、修正理由などをExcelシートなどで管理することが有効です。
  • JOBフロー図の作成
    特に複数のマクロやファイルが連携して動作する複雑なバッチ処理システムの場合、全体の処理の流れを俯瞰できる「JOBフロー図」を作成することが極めて有効です。これにより、個々のマクロの役割とシステム全体における位置づけを直感的に理解できるようになります。

3.スキルアップ支援

属人化を解消するためには、担当者以外の人のExcel VBAに関するスキルアップを支援することも重要です。スキルアップ支援を通じて、組織全体のスキルレベルを向上させることで、属人化を解消し、業務効率を向上させることができます。

  • 研修の実施
    Excel VBAに関する研修を実施し、基本的な知識やスキルを習得させます。
  • OJTの実施
    実際にVBAの修正やメンテナンスを行うOJTを実施し、実践的なスキルを習得させます。
  • 質問対応
    VBAに関する質問に答える体制を整え、疑問点を解消できるようにします。
  • 情報共有
    VBAに関する情報を共有する場を設け、知識やノウハウを共有します。

Ⅱ.情シス部門がなく、従業員のITリテラシーも今一つの場合

1.代替ツールの導入

Excel VBAの運用が困難になった場合は、より専門的な以下に上げるようなツールへの移行を検討すべきです。

  • RPA (Robotic Process Automation)
    Excelを含む複数のアプリケーションをまたいだ定型作業を自動化できます。
  • Webデータベースソフト
    プログラミング知識不要でWebベースのデータベースを構築可能。複数人での同時編集、アクセス権限管理、ワークフロー構築などが容易になります。例えば、「UnitBase」や「kintone」など。
  • BI (Business Intelligence) ツール
    データの可視化や分析に特化したソフトです。
  • 各種SaaS(Software as a Service)
    勤怠管理、会計、人事など、特定の業務に特化したクラウドサービスです。

何れも、プログラミング知識は不要ですが、大抵の場合、アクセス人数などにより月額課金されます。それなりの予算の確保が必要です。複数人の同時アクセスが可能なので、そのような用途のソフトウェアに最適です。Excel VBAのような痒い所に手が届くような機能までを期待することはやめた方が良いでしょう。

2.外部専門家の活用

社内にマクロを解析・ドキュメント化できる人材がいない場合、外部の専門サービスを活用することが最終的な解決策でしょう。専門のSEが業務内容をヒアリングし、ビジネスモデルを理解した上で、客観的な視点からドキュメント化やプログラムの標準化までを支援してくれます。