我创建了一个从网站中提取数据并保存在电子表格中的程序。但我遇到的主要问题是挂起Internet Explorer。
With ie
.Visible = True
.Navigate urll
Do While .readyState <> 4
Application.StatusBar = "Opening Page : " & i & ", Please wait..."
DoEvents
Loop
Set html = .Document
End With
循环Do虽然有时会坚持并且永远不会结束,因为Internet Explorer无法正确加载而且永远不会来到4的readystate。在这种情况下,我必须手动刷新页面(保持可见性为真)或者我必须停止程序,并对程序(数据源和目标的位置)进行一些更新。如果每第10个网页保持循环打开,这是非常耗时的。
我有一个解决方案,即在时间循环中继续执行程序应检查循环执行期间经过的时间,如果循环持续超过50秒,程序应暂停当前循环并通过刷新再次启动页。 (如果你有更好的逻辑,请告诉我。)
我无法为此工作做正确的编码。任何人都可以解决这个问题......
答案 0 :(得分:1)
试试这个( UNTESTED )
这样做会增加变量并检查循环被调用的时间。
Dim nCount As Long
Sub Sample()
'
'~~> Rest of the code
'
With ie
.Visible = True
.Navigate urll
Do While .readyState <> 4
Application.StatusBar = "Opening Page : " & i & ", Please wait..."
Wait 2 '<~~ Wait for 2 Seconds
If nCount > 25 Then
'~~> Approx 50 seconds have elapsed
End If
Loop
Set HTML = .Document
End With
'
'~~> Rest of the code
'
End Sub
Private Sub Wait(ByVal nSec As Long)
nSec = nSec + Timer
While nSec > Timer
DoEvents
Wend
nCount = nCount + 1
End Sub