2023年7月26日水曜日

ある日、Windowsパソコンを共有することになり、一番困ったのは、無人運転の夜間バッチや早朝バッチがうまく動かなかった場合のトラシューが難しくなったことだ。

或る日、突然、Windowsパソコンを共有することになった。
これまでは、夜間や早朝に無人運転していたバッチは、ログインしたままなので、エラーが起きた場合、その画面を見ることができた。
しかし、共有することになって、以降は、当然、ログインしたままにできない。
つまり、バッチは、ログインしていなくても実行できるようにした。そして、実行できた。
エラーが起きたら、プログラムはそのエラー画面を出したまま、止まっていた。だから、そのエラー画面を見ることができたのだった。
ところが、バッチで動かしたaccess、excelといったプログラムは、ログインしていないため(システムが動かしているため)、エラーが起こった場合にその画面を見ることができない。
すなわち、表からは見えないシステムの空間で実行されるので、実行中の画面もエラーで止まっている画面も全く見ることができないのである。
どうするかといえば、エラーの原因解明のための情報をログとして吐き出し、プログラムをキチンと終わらせておく必要がある。
つまり、On Error GoTo Error_Handlerをモジュールの先頭で宣言し、エラーの原因究明のじょうほうをログとして出力する、適切なError_Handler(msgbox)を書いておく。 或いは、システムが起動したプログラムを捕まえる方法は、あるのだろうか?

0 件のコメント:

コメントを投稿