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

「おぉ!動いた!」

 

ここ最近は過去記事でExcelVBAに関する記事を書いてきました。仕事の中でマクロを使えるようになると格段にミスが減ってスピードも速くなると。

 

そういったきっかけからExcelVBAやマクロを勉強するようになって、この2,3週間は日次業務で使えるマクロをExcelVBAでつくっていました。最近そのマクロをついに実際の業務で使うようになったのですがちゃんと動いてくれました。

 

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

 

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

スポンサーリンク

ExcelVBAに向く業務とは?

日々の生活の中で多くの人が何らかの仕事をしているかと思います。その中でも自分のように経理をしている人とか他に事務的な業務からエクセルを使って仕事をされる人も多いでしょう。

 

そういった業務の全てをExcelVBA化できれば、自動化できて仕事をする人は非常に楽になるような気がします。しかし実際はそうでもないようです。

 

ExcelVBAには

  • 業務の発生する頻度
  • 業務にかかる手間

からVBA化するメリットが高い業務と低い業務があるようです。

 

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

 

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

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

 

と思っていました。しかし『ストーリーで学ぶ Excel VBAと業務改善のポイントがわかる本 』という本には次のように書かれていました。

p.61

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

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

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

 

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

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

 

 

「一口に業務といってもいろいろあるけど、ここでは業務の発生する”頻度”と、業務にかかる”手間”に着目し、VBA化することのメリットについて表にしてみたよ」

 

「縦軸が業務の発生する頻度で、横軸が業務にかかる手間だね。なるほど・・・頻度が高くて手間のかかる業務こそが、最もVBA化するメリットの高い業務ということか・・・。その逆は最も低くなるんだね。」

ふーん。なるほど、確かに言われてみればそうですね。月次業務より日次業務の方が発生する頻度は高いわけです。日次なので、基本は毎日ですからね。

 

月次のように月一回の業務をマクロで自動化してもその効果は薄いですね。月一回の業務では一ヶ月全体の業務時間から見ればそれほど多くはありません。

 

一方日次業であれば基本的に毎日発生する業務なので、一ヶ月全体の業務時間から見ると大きな割合を占めるでしょう。

 

以上のようなことを知るにあたって、「やはり日次業務で使えるマクロが必要」という思いが強くなっていったのが、今回の日次業務で使うマクロをつくるきっかけのひとつでした。

試行錯誤の連続

今回ここで「ExcelVBAで日次業務に使えるマクロができた」と書きましたが、それができるまでは失敗の連続、試行錯誤の日々でした。

 

多少本を読んだとはいっても、基本は全くの素人なのでVBE上にコードを入力していってもまずスムーズに読み込まれることはありません。何度もエラーが表示されます。

 

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

 

例えばFor…Nextステートメントで繰り返し処理したい時はcellsの方がいいとありますが、実際にコードを書いてみることで、行・列とも数値を扱えるので「あぁだからcellsの方がいいのか」とわかったりしましたし、

 

Fildownメソッドを使う時はひとつ上のセルから下に複写する形になるので、例えばA3からA4に複写したい時はVBE上では「A3」と入れれば思ったとおりに動いてくれると思っていたのですが、

 

これもまた違って、A3からA4に複写したいときはVBE上ではそのままA4と入れればいいんだと気づくときもありました。

 

実際にコードを書いてみることで、自分の想定していたものよりも全然スムーズに進みませんでしたが、インターネットや書籍で調べながらなんとか完成させました。

 

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

 

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

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

 

といった感覚でした。

 

自分が社会人になる前は経理として働くなんて夢にも思いませんでいたし、まして今回のように、VBAというプログラミング言語を使って一からコードを書いて多少なりとも動作するプログラムをつくる日が来るなんてもっと夢にも思わなかったです。

 

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

問題点の改善

確かに多少なりとも動作する日次業務用のマクロができたわけですが、それでもう何もしなくていいかというとそんなことはありません。

 

VBAでコードを書いた処理を実行させるための練習用のファイルでは特に問題がなくても、実際の業務では想定しなかったイレギュラーが発生するものです。

 

例えば表の一番下のセルからその下はセルは空白のセルになります。自分がつくったマクロの中の処理にひとつ上のセルから下に複写する動作があるのですが、これが表の一番下から動作させる場合、罫線が引かれないという事態が起こりました。

 

マクロを実行しても毎回手作業で罫線を引いては何のために自動化するプログラムをつくったのかわからなくなります。

 

こういった時は「マクロの記録」機能を使って、四辺に罫線を引く場合どういったコードになるのか調べて、とりあえずそれで応急処置を施すといった形でコードを継ぎ足しながら対応していきました。

 

他にも当初想定しなかった問題もありましたが、マクロの記録を使ったり、ネットで調べて修正したりと改善を続けていきました。今は最初にできたものよりだいぶ使えるようになってきたと思います。

 

実際にコードを書くことでなんとなくわかってきましたが、自分の日常生活を支えてくれているプログラムというのは、こういった試行錯誤を経て作られているんだろうなぁと思うとプログラマーやエンジニアの方に本当に頭が下がります。

今後の課題

インターネットでExcelVBAでできるマクロについて調べているといろんなものが見つかります。その中で次の二つが今後つくってみたいというか、業務上あったらすごい便利になるなと思いました。

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

時々上司から「この請求書を印刷しといて」と言われるのですが、これが1枚や2枚ではなくて結構な数になるのです。で、そこから日次業務でつくっている表からPDFのファイル名を検索して指定のフォルダの検索ボックスに入力、

 

そこから表示されたPDFのファイルを開いてショートカットキーのctrl+Pで印刷、という流れをもっと簡単にできないものかなと思っていました。

 

どうやらマクロでは上記の工程を自動でできるものがあるらしいのですが、まだ情報収集ができていません。今後この処理を自動化できるマクロをつくってみたいです。

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

インターネットでExcelVBA関連の情報を探索していると、「ExcelVBAを使うとこんなことも出来るんだ」ということに気付き驚きの連続なのですが、その中で「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.