プロが教えるわが家の防犯対策術!

エクセルVBAで IE読み込み完了まで、というサンプルは有るのですが
時間来ても、読み込め無い時 中止の処理ですが、

下記で如何でしょうか(実験が出来ないので、お知恵拝借)
さらに、もっと、スマートな方法が有ればご教示ください。



Set IE = CreateObject("internetExplorer.application")
url = yobiurl ' "http://admin.blog.fc2.com/control.php?mode=edito …

With IE
.Navigate url
.Visible = True
i = 1
Do While .Busy = True
Call Sleep(50) '0.05sec * 400 =20秒
DoEvents
i = i + 1
If i > 399 Then
.Quit
' End With
Set IE = Nothing
Exit Sub
End If

Loop

i = 1
Do While .document.ReadyState <> "complete"
Call Sleep(50)
DoEvents
i = i + 1
If i > 399 Then
.Quit
' End With
Set IE = Nothing
Exit Sub
End If
Loop

A 回答 (1件)

イベントドリブンでやるのはいかがでしょうか。


イベントを捕捉するためにクラスモジュールに記述する必要があります。
簡便にクラスモジュールである、シートモジュールに記述して試してみました。

'Microsoft Internet Control
'Microsoft HTML Object Library
'に参照設定

Public WithEvents ie As WebBrowser

Sub test()
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "http://www.hoge^3.jp/" 'ありそうもないURL
End Sub

'下記でエラーがトラップできます
'但しGoogle Tool Bar アドインが有効だと、検索画面に移ってしまってNavigateErrorになりませんでした。
Private Sub ie_NavigateError(ByVal pDisp As Object, URL As Variant, Frame As Variant, StatusCode As Variant, Cancel As Boolean)
Debug.Print pDisp.Name
Debug.Print URL
Debug.Print Frame
Debug.Print StatusCode
Cancel = True
End Sub

'NavigateErrorと、エラーコードについてはこちら
'http://msdn.microsoft.com/en-us/library/bb268221 …
'http://msdn.microsoft.com/en-us/library/bb268233 …

首尾良く読込完了のイベントDocumentComplete、NavigateComplete2等は下記をご参照下さい。
http://d.hatena.ne.jp/dayflower/20070926/1190787 …
こちらもご参考まで。
http://okwave.jp/qa/q8434979.html
    • good
    • 0
この回答へのお礼

なるほど。

サンクス

お礼日時:2014/02/24 09:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!