無限ループ objIE.Navigate
未読分:3件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#3 2014年10月13日(月)22時41分 From: 無限ループ | 返事 削除 変更 |
なるほど。 パソコン環境によっても処理が遅いパソコンであれば進まないこともあるので、一度リフレッシュすればいいんですね。 これで一度試してやってみます! |
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 |
Message#1 2014年9月15日(月)12時55分 From: 無限ループ | 返事 削除 変更 |
win8.1でvbaでブラウザを操作しています。 XPからWIN7までは、 Sub Sample() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Do While objIE.Busy = True DoEvents Loop objIE.Navigate "http://shopping.yahoo.co.jp/" ・・・ このように、 objIE.Navigate に、URLを入れ替えても、問題なく表示できたのですが win8からは objIE.Navigateで、1つ目のURLを表示させ、2つ目のURLを表示させると、 見た目は、 二つ目の"http://shopping.yahoo.co.jp/"が表示されるのですが、 objIEの中身は、1つ目の "http://www.yahoo.co.jp/"のままです。 なので、 objIE.Navigate "http://shopping.yahoo.co.jp/" のあとに、 Do While objIE.Busy = True DoEvents Loop をしても、 objIEに格納されている値は、 "http://www.yahoo.co.jp/"だから 無限ループしてしまいます。 この現象を回避するにはどうすればいいでしょうか? エクセル2010です。 よろしくお願いします。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降