Excel VBAによる属人化の現実

先日、ある大規模学校の非常勤講師約400人のExcel VBAで作成された「勤怠管理システム」を全面リニューアルする案件を請け負ったときに直面・痛感した、「Excel VBAによる属人化」の現実についてお話ししたいと思います。

Excel VBAシステムの属人化はこうして起きた

同校では、元々、教務職員T氏作成によるExcelの関数を駆使した勤怠管理システムを使用していましたが、使用シートが10シートと多数、IF関数の多重ネスト(入れ子・多重IF)やOFFSET関数(基準となるセルから、指定した行数と列数分だけ縦と横にずらした場所にあるセルを参照することができる関数)が多用されていました。学校が急成長するなかで、T氏も教務業務で多忙となりなかなかマイナーチェンジに対応し難くなって来ました。(この段階で既に属人化していた?)

そんな状況下の6年ほど前、総務人事部に経験者募集でVBAができる若手社員K氏が入社して来ました。K氏は、「関数だけでよくここまで作成できたものだ」と驚く一方、ちょこちょこ制度がマイナーチェンジする度に、システム改修する困難さを感じていました。

そこで、これを機会にクラウドシステムも含めて市販のソフトを探しましたが、マッチするものは見つからず、やむを得ず得意のExcel VBAを駆使してスクラッチから作成することとなったという経緯があったといいます。

無事Excel VBAを駆使したシステムは完成・各校に展開も完了し、リリース当初のバグフィックスや手厚いサポートに現場は一安心もつかの間、それから一年後にはK氏はなんと人間関係のこじれから自己都合で退職してしまったのでした。

誰も改修できない、したくない?
Excel VBAシステム

近年も同社では、学生の相次ぐ増員により、非常勤講師の高齢化による離職や新規採用に苦慮しており、今年4月期から各種手当の増設を始めとする制度の大幅改定を行うこととなりました。現場の教務事務部門からは、スケーラビリティ対応や手当の自動計算、交通費の変則適用、PDFファイル出力機能等々、早急且つ切実なシステムの改修要望があったのです。

現在同社では、情シス部門も充実しVBAスキルを持つITスタッフもいますが、誰も多忙なのか、この改修に手を上げる者はいなかった、いや、他者が作ったコードを触りたくないと思ったのでしょう。それで、当社に白羽の矢が立ったのだと思っています。

属人化したExcel VBAの改修は大半がコードの読み解き

改修は困難を極めました。まずは現システムの動作の流れを確認するため、ひどいときには一行ずつのデバックをせざるを得ない状況で結果的に3日間を費やすこととなったのです。コードを読み解く一番のネックは、IFステートメントとENDステートメントの間のコードがインデント(字下げ)されていないことでした。また、Cells(y,x)などで列の指定が列番号になっており、“A”列など文字列での指定になっていないことにより、いちいち参照列のデータを確認するのがたいへんでした。

これは極めて読み辛いプログラムの典型です。変数の宣言やシートのオブジェクト化、コメントの存在がせめてもの救いでした。

本来の新機能追加や自動化、スケーラビリティ対応、そしてマニュアル作成は2日間で完了し、計5日間:約40時間もかかってしまったのです。

以上が、私が直近で遭遇したExcel VBAによる属人化問題です。皆様の職場でも同じような悩みを抱えておられませんでしょうか? 次回は、この属人化問題を解消するための方策について考察したいと思います。