VBAで日次業務のマクロをつくって試してみた結果

「おぉ!動いた!」

ここ最近は過去記事でVBAに関する記事を書いてきました。仕事の中でマクロを使える

ようになると格段にミスが減ってスピードも速くなると。

そういったきっかけからVBAやマクロを勉強するようになって、この2,3週間は日次業

務で使えるマクロをVBAでつくっていました。最近そのマクロをついに実際の業務で使

うようになったのですがちゃんと動いてくれました。

もちろん実際の業務に使うことでそれまで想定していなかった問題点も出てきましたが、

その点もなんとか改良できました。

今回は、この日次業務に使うマクロについて書いていってみます。

VBAに向く業務とは?

日々の生活の中で多くの人が何らかの仕事をしているかと思います。その中でも自分の

ように経理をしている人とか他に事務的な業務からエクセルを使って仕事をされる人も

多いでしょう。

そういった業務の全てをVBA化できれば、自動化できて仕事をする人は非常に楽になる

ような気がします。しかし実際はそうでもないようです。

VBAには「業務の発生する頻度」と「業務にかかる手間」からVBA化するメリットが高

い業務と低い業務があるようです。

自分もこの分野に関する勉強を始めた時は、

「全て自動化できたら理想じゃないか」とか

「全て自動化できることに越したことはない」

と思っていました。しかし『ストーリーで学ぶ Excel VBAと業務改善のポイントがわか

る本 』という本には次のように書かれていました。

p.61

「え!?業務をVBA化すれば、自動化されて便利になるんじゃないのかい?」

「・・・それじゃあ、おまえの部長のいってることが同じじゃないか・・・。

そうだな・・・これは表にするとわかりやすい。ちょっと待っててくれ」

そういうと八木くんはExcelを起動し、なにやら表を作り始めました。

「できた!こんなもんでいいだろ。星、この表を良くて見てごらん」

「一口に業務といってもいろいろあるけど、ここでは業務の発生する”頻

度”と、業務にかかる”手間”に着目し、VBA化することのメリットについ

て表にしてみたよ」

「縦軸が業務の発生する頻度で、横軸が業務にかかる手間だね。なるほ

ど・・・頻度が高くて手間のかかる業務こそが、最もVBA化するメリット

の高い業務ということか・・・。その逆は最も低くなるんだね。」

ふーん。なるほど、確かに言われてみればそうですね。月次業務より日次業務の方が発生

する頻度は高いわけです。日次なので、基本は毎日ですからね。

月次のように月一回の業務をマクロで自動化してもその効果は薄いですね。月一回の業務

では一ヶ月全体の業務時間から見ればそれほど多くはありません。

一方日次業であれば基本的に毎日発生する業務なので、一ヶ月全体の業務時間から見ると

大きな割合を占めるでしょう。

以上のようなことを知るにあたって、「やはり日次業務で使えるマクロが必要」という思

いが強くなっていったのが、今回の日次業務で使うマクロをつくるきっかけのひとつでし

た。

試行錯誤の連続

今回ここで「VBAで日次業務に使えるマクロができた」と書きましたが、それができるま

では失敗の連続、試行錯誤の日々でした。

多少本を読んだとはいっても、基本は全くの素人なのでVBE上にコードを入力していっ

てもまずスムーズに読み込まれることはありません。何度もエラーが表示されます。

Rangeを使った方がいいのか、それともcellsを使った方がいいのか悩む時もありました。

例えばFor…Nextステートメントで繰り返し処理したい時はcellsの方がいいとあります

が、実際にコードを書いてみることで、行・列とも数値を扱えるので「あぁだからcells

の方がいいのか」とわかったりしましたし、

Fildownメソッドを使う時はひとつ上のセルから下に複写する形になるので、例えばA3

からA4に複写したい時はVBE上では「A3」と入れれば思ったとおりに動いてくれると

思っていたのですが、

これもまた違って、A3からA4に複写したいときはVBE上ではそのままA4と入れればい

いんだと気づくときもありました。

実際にコードを書いてみることで、自分の想定していたものよりも全然スムーズに進み

ませんでしたが、インターネットや書籍で調べながらなんとか完成させました。

そして実際に初めてちゃんと動いてくれた時はちょっと感動しました。その時は

「おぉ!ちゃんと動いてくれた!」

「やってみるもんだなぁ」

といった感覚でした。

自分が社会人になる前は経理として働くなんて夢にも思いませんでいたし、まして今回

のように、VBAというプログラミング言語を使って一からコードを書いて多少なりとも

動作するプログラムをつくる日が来るなんてもっと夢にも思わなかったです。

人間何事もやってみるものだぁとちょっとばかし感慨に耽ってしまいました。

問題点の改善

確かに多少なりとも動作する日次業務用のマクロができたわけですが、それでもう何も

しなくていいかというとそんなことはありません。

VBAでコードを書いた処理を実行させるための練習用のファイルでは特に問題がなくて

も、実際の業務では想定しなかったイレギュラーが発生するものです。

例えば表の一番下のセルからその下はセルは空白のセルになります。自分がつくったマ

クロの中の処理にひとつ上のセルから下に複写する動作があるのですが、これが表の一

番下から動作させる場合、罫線が引かれないという事態が起こりました。

マクロを実行しても毎回手作業で罫線を引いては何のために自動化するプログラムをつ

くったのかわからなくなります。

こういった時は「マクロの記録」機能を使って、四辺に罫線を引く場合どういったコー

ドになるのか調べて、とりあえずそれで応急処置を施すといった形でコードを継ぎ足し

ながら対応していきました。

他にも当初想定しなかった問題もありましたが、マクロの記録を使ったり、ネットで調

べて修正したりと改善を続けていきました。

今は最初にできたものよりだいぶ使えるようになってきたと思います。

実際にコードを書くことでなんとなくわかってきましたが、自分の日常生活を支えてく

れているプログラムというのは、こういった試行錯誤を経て作られているんだろうなぁ

と思うとプログラマーやエンジニアの方に本当に頭が下がります。

今後の課題

インターネットでVBAでできるマクロについて調べているといろんなものが見つかりま

す。その中で次の二つが今後つくってみたいというか、業務上あったらすごい便利にな

るなと思いました。

指定のPDFを一括で印刷できるマクロ

時々上司から「この請求書を印刷しといて」と言われるのですが、これが1枚や2枚で

はなくて結構な数になるのです。で、そこから日次業務でつくっている表からPDFのフ

ァイル名を検索して指定のフォルダの検索ボックスに入力、

そこから表示されたPDFのファイルを開いてショートカットキーのctrl+Pで印刷、とい

う流れをもっと簡単にできないものかなと思っていました。

どうやらマクロでは上記の工程を自動でできるものがあるらしいのですが、まだ情報収

集ができていません。今後この処理を自動化できるマクロをつくってみたいです。

PDFの文字を認識してテキストデータに変換

インターネットでVBA関連の情報を探索していると、「VBAを使うとこんなことも出来

るんだ」ということに気付き驚きの連続なのですが、その中で「PDFの情報を文字認識

してテキストデータに変換」できるものがあるようです。

この部分はまだはっきりしないのですが、もし、これができるようになったらわざわざ

請求書の金額や日付、請求書番号を表に入力しなくてもよくなります。

コピー機から請求書をスキャンして指定のマクロを実行すれば請求書の情報を読み取っ

て表の対応する部分に自動で全部入力されてしまうような・・・

そんなマクロを現在イメージしています。実際つくれるかどうかは別ですが、今後は

この二つのマクロをつくっていってみたいと考えています。

あわせて読みたい

スポンサーリンク

こんな記事も読まれています

コメント

  1. Its simple script engine allows sophisticated customers
    to create new platforms where to send, converting the software application in an universal submission tool able to support any
    type of entry system.