www.youtube.com
http://www.youtube.com/watch?v=-tVlRY0DSZU
よく見かけるIEの表示待ちは、.ReadyStateが4(READYSTATE_ COMPLETE)になるまでループ
下記のような感じだと思います。
While objIE.ReadyState <> 4
DoEvents
Wend
でも、 なぜ4?と疑問を持ちますよね?
そんな疑問を少しでも解消するためにループの中で.ReadyStateを表示するテ ストをしてみます。
カテゴリ: 科学と技術
タグ: .ReadyState プロパティ テスト IE操作 VBA 三流君
テストで使ったソースは http://ken3-info.blog.ocn.ne.jp/objie/2009/06/readystate_1393.html を見てください。
'参照設定 Microsoft Internet Controls(Microsoft Browser Helpers) '参照設定の方法は、 http://www.ken3.org/cgi-bin/group/vba_ie_object.asp をみてください。 Sub ie_test() 'ページの移動後、.ReadyState <> READYSTATE_COMPLETE を テストする。 'IEの起動 Dim objIE As InternetExplorer '変数を定義します。 Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。 objIE.Visible = True '可視、Trueで見えるようにします。 '表示位置とサイズを調整する objIE.FullScreen = False '※まぁ、わざわざ設定しなくてもいいけど。 objIE.Top = 100 '左上 上位置 objIE.Left = 100 '左上 左位置 objIE.Width = 800 '横幅 objIE.Height = 600 '高さ 'XXXバー、外観・外枠の調整。 objIE.Toolbar = True 'タブの切り替えで必要なので、ツールバーを表示にする objIE.MenuBar = False 'メニューは非表示にする objIE.AddressBar = True 'URLなど アドレスバーは確認のため、表示する objIE.StatusBar = True '一番下のステータスバーを表示。 'テストで yahoo.co.jp を表示する。 Debug.Print objIE.ReadyState 'ページ移動前に.ReadyStateをテストで表示する。 objIE.Navigate "http://www.yahoo.co.jp/" 'ページの表示を待ち Dim strWORK As String '前回表示文字 Dim strReadyState As String '秒とReadyStateを文字列にする strWORK = "" While objIE.ReadyState <> READYSTATE_COMPLETE '.ReadyState <> 4の間まわる。 strReadyState = Second(Now) & ":" & objIE.ReadyState '秒と.ReadyStateを作成 If strWORK <> strReadyState Then '前回表示した文字列と比較して違ったら Debug.Print strReadyState '秒とReadyStateを表示する。 strWORK = strReadyState '↑で表示した文字を保存する(次回比較用) End If DoEvents '重いので嫌いな人居るけど。 Wend Debug.Print objIE.ReadyState 'ループを抜けた後も念のため、最後に表示する。 End Sub