ほんの数秒で仕事が片付くVBAが書きたくて
ネタです。
はじめに
とにかく多数nおVBA関連書籍が出回っていますよね。 Excelのものが中心ですが、それだけExcelで自動化したり効率化したいルーチンがあるのだと思います。
Excel VBA 本格入門 ~日常業務の自動化からアプリケーション開発まで~
- 作者: 大村あつし
- 出版社/メーカー: 技術評論社
- 発売日: 2015/05/16
- メディア: 大型本
- この商品を含むブログ (1件) を見る
- 作者: 吉田拳
- 出版社/メーカー: 技術評論社
- 発売日: 2016/06/08
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
できる逆引き Excel VBAを極める勝ちワザ700 2016/2013/2010/2007対応
- 作者: 国本温子,緑川吉行,できるシリーズ編集部
- 出版社/メーカー: インプレス
- 発売日: 2016/06/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
- 作者: 大村あつし
- 出版社/メーカー: 秀和システム
- 発売日: 2015/09/25
- メディア: 単行本
- この商品を含むブログを見る
そしてそうした書籍が多数存在しているということは、日本のサラリーマンは常に「数秒で終わらせて楽したい」のです。楽したくてたまらないのです。
わたしがプログラミングの経験がない人間だったとすると、Excel の操作だけでもやっと覚えたのに、VBAも覚えないとダメ?という気持ちになります。
どうしてVBAなのか?
これはもしかすると当たり前のことかもしれません。 なぜなら、日本のサラリーマンが日々利用しているビジネス向けのPCにおいて、Microsoft Officeが導入住みであるケースが多いからです。
社内で共有されるドキュメント、特にデータを含むものはExcel ファイルであることがほとんどでしょう。
そうなればデスクワークといえばExcel 操作であるということも言い過ぎてはいません。
Excel にはむかしからマクロと呼ばれるルーチンを自動化するための機能があります。この機能をつかって同僚が一瞬で作業を終わらせるところを見れば、使おうとするのはごくごく自然な流れです。
用途は?
関連書籍の内容を見ると、大きくは次の5点になります。
- シートをまとめる
- サマリーをつくる
- グラフにする
- 連絡をする
- その他の雑務
つまりデータが日々の企業活動において収集されてくるので、それをマネージメント層へ報告するためにExcel を使っているということです。
バスタブ曲線
これはいつか気づくことです。 VBAマクロをつくっても楽になるのは一時のことです。 バスタブ曲線というのは、つくるときは高いコストを支払うことになります(労力、人件費、時間など)。つくってしまうと作業が自動化、あるいは効率化されるので楽チンになり、コストは低い状態に抑えることができます。
しかし、その後はふたたびコストが高い状態へうつりかわります。
コストが高くなってしまう大きな原因は次の2点です。
- 業務そのものが変化するから
- 業務内容を「知らない」担当者が増えるから
上記のうちもっとも大きな原因が1つ目です。 収集されるデータの増減や不要になったレポート、逆に追加で必要になったレポートをつくるためのコストによりコストが高くなります。
2つ目はバスタブ曲線の底を進んでいるうちは問題になりません。しかし、業務内容が変化を迎えると業務に必要とされることがらについて詳しくないため複合的な学習コストが発生します。
大抵の場合、マクロをつくったのは前任者であり、後任者はマクロをつくるのはおろか、業務の変化に会わせて更新することができません。
マクロはこの時点で捨てられることになります。
必要とされるムダ
経営者から見ると、少しでも高い人件費を抑えたいため、できるだけムダを省いて圧縮して業務にあたってほしいことでしょう。
しかし無用の用という言葉があるように、必要なムダもあります。
コミュニケーションを産むムダ
「どうしてこんなレポートが必要なんだ?」などとグチを言いながら複数名でドキュメントをつくるのもよいものです。 同僚同士がこの作業のムダについてデータを共通の敵としてみたりすることで業務をネタにコミュニケーションが形成されます。 この結果として効率化や自動化という流れになることもあります。
毎回異なるお題目
これはルーチンではない、というものです。 よく似ているけれど、結果は似ても似つかないというものもあります。 こうしたものはギリギリ共通になるものを集めてルーチンと見なして自動化することがあります。
しかし、こうして作成された自動化ツールはたばねた業務の分だけ結果を作り出す必要が出てきます。
初期コストがあまりに高すぎることにもつながりますし、バスタブ曲線の後半で変化についていくためのコストがうなぎ登りになることがあります。
でも、書いたらいいよVBA
プログラマの方々からも忌み嫌われるVBAですが、書けばいいです。遠慮することはまったくありません。
プログラムやアプリかのように動作するのに、ただのドキュメントファイルです。 ExcelやWordといったファイルが破損してしまうと、もう帰ってきません。
それでもファイルさえあれば好きなように動作することができます。ファイルを渡した担当もMicrosoft Office が導入済みなのであれば、ほぼ同じように動作させることができます。
なんて便利なんでしょう。
くじけないコツ
VBAで仕事を数秒で終わらせるために、学習コストや作業コストがバカになりません。下手をすると数日かかってもどうにもならず、くじけてしまうこともあるでしょう。
そうしたときのためにくじけないコツをいくつかご紹介します。
業務を理解しよう
ウェブでサンプルコードをたくさん拾ってきたし、書籍もいろいろ読んだ、でもうまくいかないという場合はあります。
これは自分が自分自身の日々行っている業務を理解していないからうまく書くことができないのです。
VBAのことからは一度離れて、自分自身の仕事を整理すると頭もスッキリしますしオススメです。
いまを生きる
プログラマの方には怒られてしまいそうですが、「マクロの記録」機能を利用しまくって継ぎはぎをつくりましょう。
メンテナンスができない?そんなことは後回しです。つまづいているなら、いまは動くものをつくることの方がよほどか大事です。
使い捨てる
なんとか息の長いツールにしようとします。 せっかくつくるのだから、と上司にも言われるでしょう。 でも、短命なものをつくりましょう。 なんだったら捨ててもかまいません。
書くたびに習熟度が向上していきます。 これで継ぎはぎから使い捨て、きちんとメンテナンスできるツールというように進化していくことができます。
コピペで動くなんて思わない
大抵、時間短縮のためにウェブ検索をして似たようなサンプルを見つけます。 これをコピペするのですが、動くことはあまり多くありません。
「えーっ」となってくじけてしまうのはもったいないです。
シートなどのオブジェクトの名前が違っていたり、マクロが動作する状況にないといったことが原因の多くです。
日々苦労しているレポート、 ずっとつくり続けたいですか? いやなら落ち着いてよく違いを見つけてください。
書かなくてもよくなる方法を考える
ある意味、究極の方法です。
いま自分がやっている作業はほんとうに必要なのか、いらないものはないのか、といったことをヒアリングすることが最初のステップです。
この結果、作業が大幅に短縮されたり、場合によっては作業自体がなくなることもあります。
これならもうVBAなんて覚えなくてもオッケーです!
デキるサラリーマンはVBAを書かない
デキるサラリーマンというのが何なのか。 次の条件を満たすものです。
- 要求されているものを的確にとらえている
- 要求に応えるために必要なリソースを集めてくることができる
自分が上記の条件にあてはまる場合、VBAを書く必要はまったくありません。
あなたが「こういうレポートをいついつまでにつくっておいて」と言われるからVBAを書くはめになるのです。 自分がそれを指示する立場になれば、書く必要はありません。
最後に
現在最新のOffice2016ではアドオンがJavaScriptというウェブに利用される技術で記述されるようになっています。
最終的にはこちらにマクロも統合されて、VBAがいにしえの魔法になるのも遠い未来の話ではなさそうに思うのでした。