VBA(アクセス)の保守がとても辛い件について

ポエム

どうもmizukiです。半年くらいアクセスで作られたシステムとエクセルの保守管理をやってきました。そこで経験したアクセスとVBAの保守で苦労した事を書きます。

保守で苦労したこと

ソースをGitで管理できない

とても辛い。コードを変更してもどこを変えたのかわからなくなる、とりあえず変更した部分にタイムスタンプと変更内容を入れておいた。念のためバックアップを取っておいた、その結果『アクセス_20191121』『アクセス_20191211』みたいなファイルがどんどん増えていった。最後はOLDフォルダに収容。

ソースが無法地帯になりやすい

VBAは割と事務方の人も触る事があるので無法地帯になりやすい。コメントが一切ない事もザラ。そしてネストしまくってたりする(明らか条件分岐のORとかANDを知らない人が書いている)
エクセルのセルを操作している場合はエクセルのシート側を見なければならないので、かなり疲れる。シート側に複雑な関数があると地獄。

別ファイルで重複したコードが多数ある

エクセルの場合、Aエクセル、Bエクセルで似たような処理を行っている場合があり、仕様が変わったら全部手動で頑張って直していた。当然直す時に数値を間違えたりして悲惨な事になった。
モジュールみたいな奴を作って、そこに共通処理を書くようにすれば助かったかもしれない。共通処理はまとめるのが鉄則だけど、エクセルのVBAでのまとめ方が良くわからなかった。

※アクセスのVBAでは共通モジュールで汎用的な処理はまとめていました。

アクセス / エクセルの良いところ

エクセルの関数で実現できない部分をVBAで補う程度の運用だったらとても有能なツール。ただしコードの行数が長くなったり機能を詰め込みすぎるとだんだん保守が辛くなってくる。
アクセスもUIを超簡単に作れるから複雑にしなければ使い勝手は良いと思う。なお、複雑化するとエクセルの10倍くらい死ぬ。画面に変数を持たせてたりするとヤバイ(グローバル変数を使おう)

画面に変数保持しているのが嫌で全部グローバル変数に渡すようにしたんですけどこれで良かったんですかね?イマイチアクセスの正しい実装方法がわからない。

まとめ

VBAで長いコードを書くの止めよう(提案)
簡単な画面であれば、アクセスで作るのが早くて良い。複雑な機能は他の方法を考えよう。

半年くらいやっただけで、VBAの保守と聞いただけで身構えるようになったけど、本当に2度とやりたくない。「エンジニアだから昔勤めていた●●さんが作ったやつ動かないんだけど直して」とか言われると殺意を覚える。コードは読むより書く方が楽だと痛感。

明日もコーディングがんばりましょう!

コメント

タイトルとURLをコピーしました