ExcelVBAによるマクロで低下する業務効率があります
ここ一ヶ月ほど、思うところあってExcelVBAについての電子書籍を作っています。 もはやExcelに付属しているからということ以外はあまりExcelに関係ないのですが、VBAのことを再び知ることになってとてもいい経験をしています。
サラリーマン時代に大変お世話になったVBAについて、より深く知ることになったと勝手に思っています。
ところで、皆さんはExcelVBAを何にお使いでしょうか? わたしはサラリーマン時代にはシステムとシステムの間を埋める便利ツールとして活用していました。 皆さんはいかがでしょうか。
きっと、たくさん出版されている書籍の通り、業務効率化のためのツールを製作したりするために使ってるのかもしれません。
何を言ってるんだ?と思うかもしれませんが、業務効率化に向いてるのかな?と疑問を持つようになったのでエントリしてみました。これもVBAについて再び勉強してみたからかもしれません。
ExcelVBAって
ExcelはMicrosoft社が開発、販売している、どこの会社にも大抵導入されているOfficeスイート製品の代表的なアプリケーションですよね。 その用途は基本的に 表計算 で、セルに関数を入れて計算させることができます。 日本ではそのセルを方眼紙のようにしてワープロとして使ってみたり、以前のエントリでやってみたようにプレゼンテーションにすることもできます。
このExcelはワークシート関数と呼ばれる便利な計算機能のほか、条件付き書式や図形など多岐にわたる機能が盛りだくさんすぎるくらい詰め込まれたアプリケーションですよね。
本当に表計算ソフトなんだろうかと思うくらいの機能です。
そしてさらにExcelをプログラミングする人たちも引き寄せてしまうのがマクロ機能です。 マクロはVisualBasic for Application、略してVBAで記述することができるもので、ある種のプログラムを開発する環境であります。
ある種のプログラムを作ることができるので、わたしも昔は「システムに盛り込むことができなかったので一時的にマクロでしのいでください」のような話をよく耳にしていました。 実際にそうして納入されたマクロをメンテナンスすることもありましたし。
このVBAは非常に良くできていて、大抵のことはExcelだけで完結できそうなほど複雑なプログラムを作ることができます。
今回、電子書籍を書くにあたってMSDNと呼ばれるMicrosoftが開発者向けに公開している公式ドキュメントをざーっと読んでいきました。 そうすると、「へー、こんな機能あったんだ」などと知らないこともたくさん目にしました。 それらを活用すると、非常に手の込んだプログラムを作ることができます。
例えば、画面のあるデスクトップアプリケーションのようなもの、一括処理をするプログラム、ウェブサービスに連携できるようなプログラムも作ることができます。 もちろん、業務用パッケージ向けに入力データをエントリしてやるものや、逆に出力されてきたファイルを活用したレポート作成プログラムも作ることができます。
そういった内容を調べていくうちに、なんだか以前に読んだブログ記事の内容を思い出したのです。 完全にうろ覚えなのですが、「なんでもマクロでやるのはね」というようなニュアンスだったような気がします。
ExcelVBAで低化してしまう業務効率があります
実際にはそんなことないのかもしれませんが、あるんじゃないでしょうか。
マクロの面倒をみていた社員が異動してしまって、何をどうしたらいいのかわからない。 しかたなく実際の業務が変わってしまった部分をマクロの実行結果から得られるものを人間が手加工してなんとかしている、というようなことです。
実行結果までの過程がどうなっているのか理解出来る担当者が不在なため、結果だけを編集してお茶を濁すというようなケースです。
確かその記事は「クラウドサービスでそういうのができるものがあるので、そっちへ移行したほうがいいだろ」ということだったと思います。
なぜクラウドサービスがいいのでしょうか? 例えばSalesforce社がやってるForce.comなんかだと、わたしもサラリーマン時代に少し使ったことがありますが、データ項目をレポートから簡単に入れ替えたり削除したりすることができます。大抵の場合、レポーディングするときに必要なのは「サマリーする」か「フィルタする」かですから。
もちろん、VBAでも比較的簡単にできるとは思います。 しかしそれが比較的簡単にできるのはそのマクロを書いた人だけ、あるいはVBAと扱うデータに精通している人だけなのです。 わかる人には簡単だけど、わからない人には全く意味もわからないものです。 わたしも最近ランサーズに登録して、そうしたマクロを作る仕事があることを目にしましたが、自分がわからないものをそんな値段で…とちょっと驚きました。
ExcelVBAを利用したマクロにおいて、次のようなコストが発生します。 そう、ファイルが存在するだけでです。
- データ項目をメンテナンスしていくコスト
- サマリーの仕方、フィルタの仕方などビジネスロジックをメンテナンスしていくコスト
- マクロ有効ブックをバージョン管理していくコスト
- これらマネジメントを行う、VBAと業務に精通したメンバーを維持していくコスト
こうしたことからも「だれでも」「比較的簡単操作で」「業務に必要な情報を取り出すことができる」ことを考えれば、そうしたことに特化したクラウドサービスを利用するほうが経営的にも良さそうな気がします。
Microsoft製品なら、データベースのAccessなんかもあるだろ、あれもVBA使えるしレポート機能もあるよ! それはそうです。 しかしExcelと同様に単発のファイルで管理することになりますし、共有するのはファイル破損のリスクも大きな製品です。 それに人数分のライセンスが必要になります。 Accessランタイムを利用すればマクロからのみの利用もできますが、それだとExcelと変わりはしないでしょう。
じゃあ、社内イントラにウェブサービスをつくればいいじゃん、となりそうですがこちらはさらに高コストなのはお分かりでしょう。
マクロが担うべき仕事とは
クラウドサービスを利用するには、インターネットに接続することが必須でしょう。 そうなると、全員がインターネットにアクセスできるようにしないとダメかもしれません。
標的型メールやフィッシングサイトが云々…とか言ってるのに全員がアクセスできるなんて、とんでもない! そういうときは使うメンバーを決めてインターネットアクセスできるようにすればいいのですが、それはそれで「クラウドサービスを利用できる人が固定化してしまう」ということがあります。 場合によってはその担当者へ負荷が集中することも考えられます。
万が一のときはクラウドサービスもダウンすることがあります。 バックアップ体制が必要でしょう。
これを踏まえると、マクロにも担ってもらうべき仕事がありそうですね。
クラウドサービスにありそうなデータ加工はクラウドで行う。 業務特化した特殊なデータ加工、あるいはキモとなるものは社内のマクロなどで行う。
特にExcelVBAに付属の統合開発環境の強みを最大限に活かして、パワフルなプログラミング環境で高い生産性のツールを作ればよいでしょう。 そして、そこまで特化しているならVBAに詳しい人を一人くらいは教育してもいいかもしれません。 というのも、ここまで絞り込むとトラブルが発生したり頻繁に変わったりしないので、その方に集中することもないと思います。
ただし、逆にこのマクロは高コスト化が顕著になるでしょう。 簡単に安価に作ろうとするのはコアな部分なので難しいと思います。 下手に安く作るとツールが安定的に動作するかどうかが業務の安定稼働に大きな影響を与えかねません。
ExcelVBAによるマクロはどこへ行くのか
Excelがいまのまま、提供され続けるのであればまだまだ使い続けられるでしょう。 MicrosoftがCOMという技術をサポートしている間はVBA以外からもExcelを操作することができるので、息の長い技術だと思います。 プログラミングをしている方からは酷評されることも多いのはそうなのですが、便利であることも間違いありません。
わたしが勝手に調べ直して、勝手に再評価しているのですがExcelVBAは信じられないくらい高い生産性でツールを開発することができるのは事実です。 種類によってはマクロじゃないほうが早く安く作ることができるものもあるのはありますが…
とはいえ、パソコンではなくタブレットやスマホなどを支給されることが多くなっています。 事務仕事の方以外はExcelを直接扱う機会はどんどん減っていっているでしょう。 さらに、こうしたレポーディングはクラウドサービスが多数登場したことで代替できるようになっています。
いつか消え行く運命のVBAですが、当面は痒い所に手が届くというか痒い所に無理やり手を伸ばすためのツールとして生き続けるのだと思っています。
iOSアプリやAndroidアプリでVBAが動作すると、まだまだ食べていくことができる人も多いかもしれませんが。
余談
わたしはWindowsPowerShellが次に来るのかな、と思っていましたが来そうにありません。 日本では盛り上がらないですが、面白いんですけどね。 ただ、それは個人的な感想でして、実際のところ事務作業の延長線上には乗らない技術です。 無理に使うくらいなら月額いくらで購入できるサービスのほうがいいと思います。