ゆんの業務改善ブログ

①生産性向上 ②業務改善 ③自動化 について情報発信しています。VBAプログラムは本当の初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。

VBA開発最大の弱点|属人化への対応方法

VBA自動化やデータのチェックといった業務改善ツールを、非エンジニアでも簡単に開発することができる便利なプログラミング言語です。非エンジニアの事務職にとっても取り組みやすく非常にありがたい存在です。VBAでエクセル作業を自動化する事は作業時間の短縮だけでなく、作業品質の安定化にもつながります。今回は、その死角なしに見えるVBAによるツール開発の弱点、属人化への対応方法を解説します。

目次

VBAの弱点、属人化に打ち勝つ

今回はVBAの弱点である属人化に打ち勝つ方法を解説します。VBAで自動化を行うと複雑なエクセル作業を誰でも簡単に行う事ができるようになります。そしてミス無くなります。そのため、一見するとVBAで作業を自動化すると属人化の逆である、作業の標準化が進んだように見えます。

確かに、エクセル職人に頼らずに誰もが同じように短時間で同じ作業成果を出せるようになるのですから、標準化が進む面があります。しかし、このブログでは「VBAで作った便利ツールそのものが属人化しているのではないか」という見方から、ツールを開発することによって開発者に依存するタイプの属人化に対応する方法を解説してきます。

VBAは事務職が自己啓発程度の勉強で十分身に付けられるプログラミング言語

VBAはちょっとした自己啓発程度の勉強程度でも気軽に身に付けられるプログラミング言語です。始めはこのブログのような初心者向け講座で感覚を掴み、まずは一つ小さくてもいいのでツールを完成させることが大事です。取りかかることは簡単である一方で、ある程度の継続、ある程度の経験は必要となります。それさえできれば必ず身につける事ができますので頑張って行きましょう。

<この項に関する関連記事>
業務効率化ならExcel VBAから始めるのがオススメな理由 10選
Excel VBA入門 本当のど初心者向けシリーズ
業務改善におすすめのプログラミング入門言語 3選 + 厳選入門書
プログラミング関連の本やネットで言う「初心者」の3つの意味
Excel VBAの実力を絶対評価で定義する|初段~四段

ちょっとした便利ツールを気軽に作れると言うメリット

ほぼ全てのプログラミング言語において、勉強を始める前に環境構築という作業が必要です。環境構築というのはプログラムを書いたり実行するのに必要な設定を行うと言う事です。通常、この環境構築作業は非常に重たいソフトをインストールしたり、個別の設定を行ったり、バージョンが変わるたびにアップデートしたりと面倒です。面倒なだけでなく、初心者にとっては難易度が高い作業で、勉強を始める前の段階で挫折してもおかしくないと思います。

一方で、エクセル VBAはMicrosoftのエクセルさえインストールされていれば、環境設定は既に済んでいると言っても過言ではない状況でいきなりプログラムを書き始めることができます。これは非常に大きなメリットです。また、インターネットや書籍など日本語の解説情報も非常に充実しているため、学習しやすい環境が整っていると言えます。

これで、もし日常業務にエクセルが多用されているとすれば、これはもうVBAを学ばない手はありません。このように誰でも気軽に学ぶ事ができ、作業の効率化が図れることがこの言語のメリットと言えます。

気軽に開発できるからこそ陥るデメリット

f:id:mutable_yun:20191128235540j:plain
このようにエンジニアに限らず誰でも気軽にプログラミングに取り組むことができると言う大きなメリットがもたらすデメリットに目を向けてみましょう。

プログラミング入門書に書かれていない大切なこと

VBAではエンジニアでもなくても、一般企業の事務職の方でも自動化ツールが開発できるプログラミング言語です。つまり、自分で開発した便利ツールは商品として販売するわけではなく、自分だけで使う前提です。もしくは自分だけで使う所から始まり、実力が付いてきて周囲の人に配布している場合もあるでしょう。いずれにせよ、自分だけが使う便利ツールがスタート地点である事に変わりはありません。

ここで入門書には書かれていないとても大切な事について触れます。

それは、人に使ってもらうとなるとVBAと言えども難易度が大きく変わってくると言う事です。例えばファイルを取り込むという簡単な操作一つにしても、あなたが想定したボタンと違うボタンをユーザーが押すかも知れません。取り込むデータのヘッダーなどデータの形も変わるかも知れません。自分だけが使うツールなら想定外の操作に対応する必要も無ければ、仕様の変更が必要であればプログラムを手直しすれば済む話です。しかし、人に使ってもらうとなるとあらゆる操作に対してエラーが出ないように作り込む必要がありますし、仕様変更の必要が発生したら「暇ができたとき」ではなくユーザーの都合に合わせて速やかに改修して最新版を配布しなくてはなりません。

つまり、ツールというモノは人に渡すと言う前提に立った途端に開発者に依存する事になるのです。ツールによって一見標準化された業務が実は開発者に属人化してしてしまうとはこのことです。これまで個別の業務担当であったユーザーに依存しなくなった代わりに開発者に依存するようになってしまったわけです。考え方によってはプログラミングスキルがある人しかメンテナンスできないという意味でよりたちの悪い属人化と言えるかも知れません。

属人化に打ち勝つ方法

f:id:mutable_yun:20191129000303j:plain
VBA開発の最大の弱点である属人化に対応する前に認識しておきたいことがあります。それは以下の2点です。

  • 開発者に依存すると言う事はプログラミングスキルのことなので、プログラミングができる人を増やせば良い
  • プログラムの中身を明確にしておけば、プログラムさえ書ければ再現やメンテナンスができる

つまり、開発者に依存するので属人性が高まるという話は、属人化の話の1つめのスキルの面しか語っていないと言う事です。「わたしはプログラミングなんかできない」と思っているとここで思考が停止してしまいます。ここで思考回路が停止しては半分しか議論したことになりません。

2点目の、プログラムの中身を明確にしておけば、ツールの改修が必要になったときにメンテナンスができる事になります。話はかなり単純になりました。あとはこの2点への対応を行えば、VBAツールによる属人化への対応ができ、安心して自動化などの業務改善を進めることができる様になります。

複数の開発者を育成する

そもそもVBAは非エンジニアの事務職でも取り組みやすいプログラミング言語でした。と言う事は、努力次第である程度までは誰でも身につける事ができるのです。できないとすれば、それは心理的に「わたしなんかにプログラミングなんてムリ」と抵抗があるだけに過ぎません。

自己啓発で自らスキルアップを図る週間のない人には業務としてVBAを学んでもらうようにします。読み書きができる人材を増やす事によって特定のひとりへの属人化を防ぐことができます。これはリスク管理の上に非常に大切な事なので、VBAツールがある部署においては少なくとも2人はVBA人材の確保をするようにしましょう。できれば3人以上が望ましいところです。

開発ドキュメントをそろてプログラムの中身を明確にする

開発ドキュメントには様々な種類がありますが、非エンジニアが作るちょっとした便利ツールレベルであれば要求仕様書があればほぼ大丈夫です。要求仕様書とは、そのツールで実現したい内容を明確に定義したドキュメントです。これがある事により、そのツールを紛失してしまったり、データの仕様が変わってしまっても新たなツールを新たに開発して元のツールを再現したり、元のツールを改修したりすることができる様になります。

開発ドキュメントについては会社員がVBAで自動化するのに必要な開発ドキュメント3点で詳しく解説しているので詳細はリンク先をご参照下さい。

VBA 属人化への対応方法まとめ

この記事の内容をまとめると以下の通りです。

  • VBA事務職でも取り掛かりやすい優秀なプログラミング言語
  • 業務の属人化を防ぐ一方、ツールそのものが属人化してしまう弱点がある
  • ツールの属人化を防ぐには、人材育成と開発ドキュメントの整備の2点を進める

最後に一点大事なことを付け加えます。それは、ツールの属人化さえ防ぐことができれば業務自体はツールで属人化を防ぐことができているので、真に担当者に依存しない強力な組織を構築することにつながるということです。VBAで業務改善を行う風土のある職場では、一歩進んで、ツールそのものをメンテナンスする体制の構築を進め、真の属人化フリーを目指しましょう。