Excelで処理を自動化させたいことがあったので、最初はマクロの
OnTime メソッドを使って処理させようとあれこれいじったのですがなんだかいまひとつうまくいきません。
OnTime メソッドでは、一定時間間隔でマクロを動かすか決まった時間にだけ動かすのは非常に簡単にできます。しかし、一定時間間隔処理でNow()関数を使う方法では処理時間によって処理間隔が変化してしまうこと、時間指定の場合は日付が変わると処理されないなどの問題が発生しました。マクロの組み方が悪いのでしょう。
あれこれいじるのもめんどくさいので、ここは一丁
Windowsのタスクで処理させることに変更しました。
このタスクなるもの、Windowsで自動化させたいとも思いませんでしたので今まで使ったことがありません。俺にとってはほぼ初体験だったのですが、使ってみてあまりの意味不明さに驚いてしまいました。
このタスクの使いかたは
ぐぐるとたくさん出てくるのですが、タスク実行のタイミングが一番短くて一日一回ってのにまずぶっとびます。もっと細かい設定は「プロパティ」->「詳細設定」で出来るようなのですが、よくわかんねーのがこれ。
なんだか一定間隔で処理させる場合ここの時間をその間隔より長くしないとダメらしいのだけれど、なぜそうしなければならないのかよくわかりません。
もうひとつ「設定」のタブでこんな意味不明なものもあり面食らいます。
タスクの継続時間てなに?処理が終了したら終わりじゃねーの?cronに慣れている俺には意味不明なことばかり。
俺の場合、excelでの処理はauto_open()でブックを開いたときに自動実行させ、ブックを開く間隔はタスクスケジューラに任せるという方法を取っていたのですが、はじめは動くのだけれども2回目から作動しません。あれこれやってみてわかったことは、「設定」タブで出てくる継続時間をデフォルトの72時間にしておくと初回開始から72時間が過ぎるまで2回目の処理に移らないという驚くべき結果でした。
いや、本当に驚きましたよ。開くのも閉じるのもタスクスケジューラが主導権を握っているのですね。そのことを理解するまで真面目に悩みましたよ、ええ。やっぱり自動処理はLinuxとかの方がずっといいなぁ。いや、多分慣れなんでしょうけどね。だけどコマンドラインで細かく制御できないと自動化はわかりにくくなるよね。そもそもGUIだけのソフトを自動化させるのって複雑怪奇になって当り前かもしれんなという結論に達しましたとさ。めでたしめでたし。