最近SeleniumBasic、Webdriverを使ってWebスクレイピングを再開した。
暇はいくらでもあるので、一つの問題点、バグに長時間かけて対処することが出来ている。
そして、VBAを使い始めた当初から懸案となっていたエラー処理が、30数年ぶりに解決した!!!!!
直リンクは避けるが、”エクセルVBA【On Error GoTo】 2回目以上使いたい”で検索するとヒットするサイトで見つけた”超絶技巧”
”実際の記述は少々違うが”
GoTo ERH1
ERBACK1:
Resume ERH1
ERH1: 注2
On Error GoTo ERBACK1
”エラーが発生する処理”
On Error GoTo 0
と記述すると、
Web読み込み速度に由来する、予測できないエラー、
Resume Nextで飛ばしても次のエラーでストップする、
原因不明で時々発生するが、デバッグで再開するとそのまま動作する
などの場合でも対処できる! 注1
Resume ERH1 ’ラベル名は任意
ERH1:
肝はこれだけなのだが、上記サイト以外では見たことが無い!
サイト管理者の方、どうもありがとうございました。
このテクニックを30数年前にゲットしていたら、もっとましなマクロが出来ていたのだが・・・・・
注1:これを使用することで予期せぬ問題が発生する可能性は無いとは思うが、適用は自己責任で!
注2:実際にはこの部分は、
ERBACK1:Resume
ERH1:
でも良かった。
ERBACK1:Resume をマクロの最後に
End
ERBACK1:Resume
End Sub
と記載して、エラーを無視して再トライしたい場合は全て”ERBACK1”に飛ばしてResumeで元の処理に戻す方が、スマートかもしれない。