無限ループ objIE.Navigate 削除
Message#2 2014年9月15日(月)13時05分 From: 管理人 |
サイトによっては質問者様のようにサイトの読み込みがうまくいかず無限ループに陥ることがあります。 読み込み部分で制御処理を加える場合は、ループから脱出する処理を入れるか、リロード処理を追加して読み込みを行う方法です。 以下は参考の読み込み制御ソースになりますので、ご確認ください。 こちらでもうまくいかない場合は、GoToステートメントなどでループ脱出処理を入れてカスタマイズしても大丈夫かと思います。 ちなみに読み込みチェックでよく利用される「Busyプロパティ」「ReadyStateプロパティ」を簡単に説明するとBusyプロパティはページ処理状況を示すものでTrueの場合は処理中、Falseの場合は処理完了を返します。 ReadyStateプロパティも同様で、こちらはIEの状態を取得するプロパティで、4(READYSTATE_COMPLETE)が全データの読込が完了した状態をあらわすので、objIE.ReadyState <> 4で処理中の場合はループ処理をさせます。 このどちらかが該当せず無限ループに陥っているのだと思います。 【待機処理プログラム】 timeOut = Now + TimeSerial(0, 0, 10) Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Sleep 100 If Now > timeOut Then objIE.Refresh timeOut = Now + TimeSerial(0, 0, 10) End If Loop timeOut = Now + TimeSerial(0, 0, 10) Do Until objIE.document.ReadyState = "complete" DoEvents Sleep 100 If Now > timeOut Then objIE.Refresh timeOut = Now + TimeSerial(0, 0, 10) End If Loop 【参考ページ】 Navigateメソッドで指定URLを開く:http://www.vba-ie.net/ie/navigate.html |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。