【Excel VBA備忘ログ】IEの表示完了を待つ(修正)
IEの表示が完了する前に、submitやclickなどを行うとエラーに
なってしまうため、IEが表示し終わるのを待つ必要がある。
ループでウェイトを組んでやるのが手っ取りばやい。
0)準備
Const WAITTIME As Integer = 5 'ウェイト時間を定義(5秒)
Dim IE as object
Dim url as string
Set IE = CreateObject("InternetExplorer.application")
IE.Navigate url
※urlは開きたいURLを指定
1)IEの表示が終わるまで待つ
Dim timeout As Date
(1)スタート時の時間よりも未来の時間を作っておく
timeout = DateAdd("s", WAITTIME, Now())
(2)上記の(1)の時間に到達する(タイムアウト)又は
IE.BusyフラグがFalseになる(=IEの動作が完了した)までループ
Do While IE.Busy = True
DoEvents
If timeout < Now() Then
Exit Do
End If
Loop
(3)再度、タイムアウト時間を更新
timeout = DateAdd("s", WAITTIME, Now())
(4)BusyフラグがFalseになってもデータ読み込みが完了しているとは
限らないため、readyStateフラグが4(読み込み完了)までループ
Do While IE.readyState <> 4
DoEvents
If timeout < Now() Then
Exit Do
End If
Loop
(5)最終的に成功しているか
If IE.Busy = False And objIE.readyState = 4 Then
Debug.Print "成功しました"
End If
| 固定リンク
「Excel」カテゴリの記事
- 【Excel VBA備忘ログ】WebBrowserを貼ったシートからの切替でエラー(2008.06.22)
- 【Excel VBA備忘ログ】Webクエリを使ってテーブルを簡単に読み込む(2008.06.19)
- 【Excel VBA備忘ログ】WebBrowserコントロールのプロパティが適用できない(2008.06.07)
- 【Excel VBA備忘ログ】FRAMEを持つサイトの構造を調べるには(修正)(2008.05.05)
- 【Excel VBA備忘ログ】IEの表示完了を・・待てな~い!(2008.06.09)
トラックバック
この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/36872/20866482
この記事へのトラックバック一覧です: 【Excel VBA備忘ログ】IEの表示完了を待つ(修正):


コメント