はじめに
Excel VBAは手軽で強力な自動化手段です。
しかし、業務システムの選定において最初に選ぶべきものではありません。
- Excelがある
- VBAが書ける
- だからVBAで作る
この判断は短期的には成立しますが、
中長期では 運用・保守・拡張のいずれかで歪みが出ます。
本記事では、
業務に使用するシステムを判別する視点として
「Excel VBAが最適解にならない場面」を整理します。
Excel VBAを最初の選択肢にすべきでない場面①
恒常的に大量データを扱う業務
- 数十万行以上のCSVを定常処理
- ログ・履歴データの蓄積と集計
- JOINや集約処理が頻発する
Excel自体が大量データ処理向けではなく、
VBAは逐次処理が基本です。
結果として起きること:
- 処理時間が読めない
- メモリ不足が発生する
- 環境差で挙動が変わる
代替として検討すべき選択肢:
- Access
- SQL Server / PostgreSQL
- Power Query(軽度な場合)
Excel VBAを最初の選択肢にすべきでない場面②
複数人・複数拠点で同時利用する業務
- 共有フォルダ上のExcelを複数人で操作
- Excelのバージョンが統一されていない
- マクロ有効/無効の差異がある
VBAはクライアント依存が非常に強いため、
この構成では運用が破綻しやすくなります。
典型的な問題:
- 同時編集不可
- 原因不明のエラー
- 特定環境でのみ再現する不具合
この場合は:
- Webアプリ
- 業務システム
- RPA(端末完結の場合)
を検討すべきです。
Excel VBAを最初の選択肢にすべきでない場面③
業務ルールが頻繁に変わる処理
- 条件分岐が増え続ける
- 例外対応が後付けされる
- 担当者ごとに判断が揺れる
VBAで対応すると、
If文が増殖し続ける構造になります。
結果:
- 修正のたびに別の処理が壊れる
- 作者以外が触れない
- 仕様がコードに埋もれる
この場合は:
- ルールのマスタ化
- 設定ファイル化
- RPA+外部定義
を先に考えるべきです。
Excel VBAを最初の選択肢にすべきでない場面④
エラーが許されない業務
- 金額計算
- 請求・支払
- 勤怠・給与
VBAは、エラー処理を書かなければ
エラーを無視して処理を続行できます。
逆に言えば潜在的なエラーを抱えてしまう恐れがあります。
On Error Resume Next
Excel VBAを最初の選択肢にすべきでない場面⑤
業務が整理されていない状態
- 手順が人によって違う
- 判断基準が曖昧
- 例外条件が洗い出されていない
この状態でVBAを書くと、
業務の歪みをそのまま固定化することになります。
結果として:
- 属人化が進む
- 「なぜこうなっているのか」が誰にも分からなくなる
- 改善しようとすると全体が壊れる
自動化の前に必要なのは:
- 業務手順の整理
- 判断基準の明文化
- 例外条件の洗い出し
VBAに限らず、自動化は改善の後段です。
まとめ
Excel VBAは便利ですが、
業務に使用するシステムの判別基準として見ると、
最初に選ぶべきものではありません。
- 大量データ
- 多人数運用
- 高頻度ルール変更
- 高信頼性要求
これらが絡むほど、
VBAは最適解から遠ざかります。
「作れるか」ではなく、
「使い続けられるか」で選ぶべきです。