IE操作でnavigateを連続するとエラーが出る

IE操作でnavigateを連続するとエラーが出るエクセルVBAを使っている人で、この症状に悩まされたことがある人は多いと思います。

しかもサイトやPC環境によって、エラーが出たり出なかったりするからタチが悪い…

この原因として、Webページの移動が完全に終わってないうちに、オブジェクトを触りにいってしまうということがあります。

この対処方法としては、BusyプロパティとReadyStateプロパティの値で判断するのが有名ですよね。

Do While objIE.Busy = True Or objIE.ReadyState <> 4
DoEvents
Loop

でも、どうやらこれだけだと問題も多いようで。

どうも、見た目にはWebページが完全に開かれて(閉じられて)いても、裏では情報が残っていることがあるらしく、その状態でnavigateメソッドを実行すると失敗します。

JavaScriptを多用しているサイトなんかだと、ページ表示後に、再度またページを読み込むことがあるらしく、その場合はいったん停止処理を入れて、再びWebページの移動待ち処理を行う必要があるようです。

ちなみに、僕はJavaはまったくわからないのですが、今日『予告犯』という映画のなかで、生田斗真がむかつく上司に「Javaが少しできたくらいで、プログラマー気取りのヤツっているんだよなー」って嫌味を言われてました。

僕はVBAとCしか知らないのに、たまにプラグラマー気取ってますけど…

ちょっと脱線しちゃいましたけど、とりあえず僕がやって効果があった方法を紹介します。

Do While objIE.Busy = True Or objIE.ReadyState <> 4
DoEvents
Loop
for n=0 to 100
sleep 10
Doevents
next
Do While objIE.Busy = True Or objIE.ReadyState <> 4
DoEvents
Loop

これで完全ではないですが、エラーは激減しました。

ポイントは停止処理をsleep 1000にしないで、間にDoEventsを挟むこと。

ただ、こうすると一気に取得時間が遅くなります。

昨日の夕方からある時系列データを取得しているんだけど、30時間くらい経ってまだ終わってないw

トレード結果

今日もメイン戦略の株のロングショートの利益だけ。
他の手法は負け。

上がっても下がっても、横ばいでもSQでも勝てちゃう魔法の手法。

そして絶対に数えちゃいけないと思ってたけど、さっきみたらグロスベースで24連勝中…

さすがに少しだけ浮かれそうだw

でも、これで調子にのって増資した瞬間終わるんですよね。知ってます。

今日の収支 66250円

692502015年収支

「IE操作でnavigateを連続するとエラーが出る」への2件のフィードバック

    1. >yarukiさん
      お疲れです!

      あいにくと弟子は取らない主義なんでね。
      っていうか、やる気さんは俺の10倍以上稼いでるのに何言ってんのw

コメントを残す

メールアドレスが公開されることはありません。