VBScript で On Error のスコープに気をつけろ

VBScript 書いてて、エラーが出たときはとりあえず無視して次の行からしれっと続けて欲しいという部分がありました。特定フォルダ内のファイルをごっそり削除する、しかしオープン中であったり権限が足りなかったりという削除できないファイルはとりあえず放置しておく、という動きをしたかった。

エラーが出たらそのファイルはスキップして次に行けば良いよね、ということで On Error Resume Next とスクリプトの最初に書いておいたわけです。なんかの説明で、一番外側に書いておけばスクリプト内全部で有効になるというのを読んだことがあるような気がして。

で、Sub プロシージャを呼び出してる部分がありその中にループ処理があるんですが、ここでループ中にエラーが出たら次の処理に移らず Sub プロシージャ自体を終わらせてしまうんですね。

なんだろうなんだろうと思ってたのですが、On Error Resume Next を Sub プロシージャ内に書いたら解決しました。それだけのことかい。スコープの話かい。