.Busy プロパティ の テスト です。 .Busyだけでは待ちきれない・・・を説明しようとして、いつ ものように解説が空回りしてます(笑)
カテゴリ: 科学と技術
タグ: .Busy プロパティ テスト IE操作 VBA objIE 三流君
テストのソースは http://ken3-info.blog.ocn.ne.jp/objie/2009/06/busy_ad6a.html を見てください。
よく私が使うIEの表示待ちは、
While objIE.Busy = True 'IEが忙しい(.Busy=True)あいだループする
DoEvents 'Doeventsは重いので嫌いな人居るけど
Wend
みたいに objIE.Busy = True でループさせてます。
でも、 objIE.Busy = True だけだと、完全に待てない、そんなテストをしてみます。
'参照設定 Microsoft Internet Controls(Microsoft Browser Helpers) '参照設定の方法は、 http://www.ken3.org/cgi-bin/group/vba_ie_object.asp をみてください。 Sub ie_test() 'ページの移動後、 .Busy プロパティを見る '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 '一番下のステータスバーを表示。 '.gohome で ほーむを表示する。 objIE.GoHome 'ページの表示を待ち Dim strWORK As String '前回表示文字 Dim strBusy As String '秒とBusyを文字列にする strWORK = "" While objIE.Busy '.Busy=Trueの間まわる。 strBusy = Second(Now) & ":" & objIE.Busy '秒と.Busyを作成 If strWORK <> strBusy Then '前回表示した文字列と比較して違ったら Debug.Print strBusy '秒とBusyを表示する。 strWORK = strBusy '表示した文字を保存する。 End If DoEvents Wend Debug.Print objIE.Busy 'ループを抜けた後、最後に表示する。 End Sub '↑から少しテスト方法を変えて、5秒間ループさせ、 'その間、.Busyの値が変化したら、表示してみました。 Sub ie_test() 'ページの移動後、5秒間 .Busy プロパティを見るテスト '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 '一番下のステータスバーを表示。 '.gohome で ほーむを表示する。 objIE.GoHome 'ページの表示を待ち Dim time5 As Date '5秒後 Dim strSS As String '表示する秒 Dim strWORK As String '現在の秒を保存する time5 = DateAdd("s", 5, Now()) '5秒後をDateAddで計算して代入 strSS = "" '表示する秒を初期化 While Now <= time5 '現在時刻Nowが計算した5秒後以下の間ループ strWORK = Second(Now) & ":" & objIE.Busy '秒と.Busyを代入 If strWORK <> strSS Then '表示した文字と違ったら、 strSS = strWORK '表示文字を新たにセット Debug.Print strSS 'Debug.Printでイミディエイトへ表示 End If Wend objIE.Quit End Sub