ぐわぐわ団

読んで損する楽しいブログ

怒り狂うExcelによく効く呪文があります

最近、草むしりがヒマなときはExcelのVBAで遊んでいて、習うより慣れよの精神で好き勝手にかちゃかちゃしてたらなんかいろいろとできるようになってきて、そこそこ面白いのです。

そんなわけで、やるからにはとことん自動化したろと思って、とあるフォルダの中にあるファイルを開いて、そのファイルから必要なデータを取り出して、それからファイルを閉じて、ついでに使い終わったファイルは消してしまうという、自分で毎日していることなんですが「なんだか時間がもったいないなぁ」と思わずにはいられない単純作業をVBAを使ってExcelにさせてみようと思ったのです。

ただ、最新のExcelではこんなこと起きないのかもしれませんが、私の使っているExcelはバージョンが古いからなのか、ファイルを開いてどうのこうのしようとするとExcelがパンクして一瞬で落ちてしまうのです。さすがにムリさせすぎかぁ……と半ばあきらめていたのですが、偶然にも怒りのあまりに我を忘れてプッツンしてしまうExcelをなだめる呪文を見つけました。

DoEvents

ファイルを開いたり、閉じたり、消したりする前にとりあえず ”DoEvents" と書いておけば、Excelさんは正気に戻ってきっちりとお仕事をしてくれるのです。ちなみに、Microsoftの解説ページにはこんなふうに書かれていますがちんぷんかんぷんです。

DoEvents はオペレーティング システムに制御を渡します。 オペレーティング システムがキュー内のイベントの処理を終了し、SendKeys キューのすべてのキーが送信された後、制御が戻されます。

大正生まれの私には何がなんだかさっぱりわかりません。おそらく、Excelにファイルを開いたり、閉じたり、消したりするよう命令しているわけですが、実際に作業をするのはOSのため、 DoEvents と命令することによりOSに「頑張れよ!」と一声かけると同時に、Excelには「お前はでしゃばるな!むちゃしたら血管切れるんだから……」と落ち着かせる効果があるのでしょう。とにかく、DoEvents のおかげで自分でイヤイヤしている単純作業をExcelにさせることができるようになりました。ありがたいことです。合掌。