輸入ビジネスで効率を上げるためにエクセルマクロを使っている人をよく見かけます。
たとえばリサーチに使うエクセルだったり、売上管理のエクセルだったり。
わたしは本業がシステムエンジニアですのでもちろんエクセルマクロも扱えます。実はエクセルマクロの資格も持っています。
エクセルマクロの資格はVBAエキスパートという名前の資格になるのですが、これはプログラミングとエクセルが扱えればまぁ誰でも取れるような資格ではあります。
むかしはよくエクセルマクロを使っていたのですが、最近ではほとんど使いません。それはなぜか?
エクセルマクロを使わない理由
柔軟性がなくなる
いつも思うのですが、エクセルほど優秀なソフトウェアはない気がします。表計算ソフトでありながらドキュメントの作成もできます。
ドキュメント作成にWordを使おうとすると、その重さや思ったように文章のバランスを取れなかったりしてイライラします。
エクセル関数はとても優秀で、プログラムを使わなくても複雑な計算ができたりします。おまけに精度が高い!プログラムは小数点の計算が苦手でよく誤差が出ます。
エクセルの優秀なところは柔軟性です。ちょっと行や列を挿入してもセルの参照が自動的に追従してくれます。
編集したとしてもエクセルのオートフィル機能を使えば簡単に全セルに反映させることもできます。
しかし、これがエクセルマクロを使ってしまうと一気に柔軟性が落ちてしまうのです。
ちょっと編集しようとしても、わざわざマクロのエディタを起動しなければなりません。
改造内容を全セルに反映しようとすると、プログラムもいちいち考えなければならなくて非常に面倒です。
たとえば、あなたが外注さんにエクセルマクロの開発を依頼したとしましょう。
と思ってもまずできませんよね。改造してもらおうとすると、またお金がかかります。
後述しますが、エクセルマクロのプログラムは異常なまでに難解で、プロですらメスを入れづらいのです。
ファイルを開く度にいちいち警告が出る
通常のエクセルファイルは拡張子が『.xlsx』です。エクセルマクロのエクセルファイルは『.xlsm』になります。
エクセルマクロは悪意あるコードを埋め込まれる可能性があるせいか、ファイルを開く度に警告が出て来るんですよね。
これがたいへん、わずらわしい!
と、ストレスが溜まります。ファイルを開くだけで数ステップ作業が増えてしまいます。
効率重視の人間からするとこの手間すら削減したくなるのです。
エクセルマクロのプログラムは読みづらい(メンテナンスしづらい)
さきほども少し触れましたが、エクセルマクロのプログラムはすごく読みづらいです。
わたしの経験上、エクセルマクロはプログラミング言語の中でもNo1かNo2ぐらいの難解さです。
その理由は、プログラムの中にどこのセルを指定して~、いくつ移動して~、というような記述をするためです。
とても混乱させられます。さらにどこのシートに何をして~というのも加わることがあります。
エクセルマクロのプログラミングは常にセルの位置を頭の中で把握しながらやっていかなければならないのです。
これが一個でもずれると全然ダメダメのプログラムが出来上がってしまいます。
作っているときはやっとこさわかるのですが、少し時間を置いて改造しようと思うと、自分で作ったはずのプログラムですら解読できなくなります。
解読ならぬ、『解毒』が必要なのです。
たとえると、作ったときはキレイなホテルなのですが、時間が経過して建物が朽ちていき、新館を建築する。旧館と新館をくっつけたりして、田舎の旅館みたいなプログラムが出来上がっていくのです。
さらに外注さんがころころ変われば、そのプログラムは継ぎ足し継ぎ足しの秘伝のタレへと変貌します。
わたしが考えるエクセルのあるべき姿
極力エクセル関数だけで済ませる
わたしは輸入ビジネスにおいて、ひとつもエクセルマクロを使っていません。自在にプログラムを扱える人間がエクセルマクロを使わない、この理由をよく考えてほしいのです。
正確にはエクセルマクロを使おうと思ったことはありますが、上述したように柔軟性がなかったりメンテナンスが手間だったりしたのでやめました。
やはりエクセルはエクセルの長所である柔軟性は捨ててはいけないんですね。出来る限りエクセル関数だけで済ませるべきでしょう。
輸入ビジネスで必要なエクセルの機能や関数を使ったサンプルもありますので、よければ参考にしてみてください。
マクロはアドインにする
それでもどうしてもエクセルマクロを使わなければならないというときがあります。
そういうときは、マクロをファイルに埋め込むのではなく、エクセルのメニューに埋め込むタイプのアドインにしたほうが良いでしょう。
ちょっとむずかしい話になりますが、エクセルマクロというのは、ブック(エクセルファイルそのもの、のイメージ)に埋め込むか、シートに埋め込むか、など、埋め込む場所があるのです。
ブックやシートなど、エクセルファイルにマクロを埋め込んでしまうと他のファイルでマクロが使えません。
こっちのエクセルファイルでも同じマクロ使いたいんだけどなぁ…といったときに、ふたたびマクロを作るかコピーしなければなりません。
アドインにしておけばどのエクセルファイルでも使えるようになるし、ファイル開くたびに警告もでないのでわずらわしさがいくらか軽減されます。
プログラムでなんでもできると…思うなよ!?
ネットで情報を集めていると、ホントにエクセルマクロに頼っている人が多いなぁと感じます。
効率を上げるためにプログラムの力を借りるというのは正しいのですが、なんでもかんでもプログラムにしてしまうというのは間違いです。
当ブログで公開しているAsinKeeperですが、これはIEを遠隔操作してデータを収集・解析するツールです。
実はこのIE遠隔操作プログラムはエクセルマクロでも、ほとんどそのまんま使えます。
しかし、エクセルマクロでIE遠隔操作まですることはおすすめしません。そのように使う人も多いのですが、例のごとくプログラムは適材適所で、エクセルマクロでIE自動化はちょっぴりトリッキーな感じがしますね。
機能を切り分けたほうが効率が上がる
わたしのツールは基本的にcsv形式で結果を出力し、それをエクセルのシートに貼り付けて参照する仕組みにしています。
こうやって機能を切り分けたほうが問題が発生したとき、切り離してメンテナンスができるから結果的に効率が良いのです。
大事なことなのでもう一度書きますが、問題を切り離せるようにしたほうがメンテが楽で効率が上がるのです。
つまり、なんでもかんでも自動化するより、将来的な拡張性を見越して人間がやるべきところとプログラムでやるべきところをしっかり見極める必要があるということです。
まとめ
- エクセルマクロは柔軟性がない。
- エクセルの最大のメリットである柔軟性の高さが活かせなくなる。
- ファイルを開くたびに警告が出たり、コンテンツを有効にする必要があったり、めんどくさい。
- エクセルマクロのソースコードは読みづらくメンテナンスが大変。
- エクセルは極力、エクセル関数で済ませるのが理想。
- プログラムはなんでもかんでも解決してくれる魔法のツールではない。
1つのエクセルファイルでなんでもかんでもやろうとせず、機能単位で切り分けることをおすすめします。
ちなみに、わたしが作成しているツールやエクセルファイルはそういった仕組みにしています。
たとえば、ツールひとつでリサーチから売上管理までできるようにしてしまうと、売上管理の処理をちょっと改造しただけなのにツール丸ごとアップデートしなければなりません。
もしかしたら意図せずにリサーチ機能のほうにも影響が出てしまう可能性もゼロではありません。
しかし、リサーチと売上管理を切り離しておけば、売上管理だけアップデートすれば良くなります。
エクセルってやつは本当に優秀です。だいたいのことはマクロを使わずエクセルだけでなんとかできたりします。プログラムに頼る前に、エクセルを極めて見ることをおすすめします。