我已经创建了一个程序,从网站中提取数据并保存在电子表格中。但我遇到的主要问题是Internet的吊死。
With ie
.Visible = True
.Navigate urll
Do While .readyState <> 4
Application.StatusBar = "Opening Page : " & i & ", Please wait..."
DoEvents
Loop
Set html = .Document
End With循环有时会停止,因为internet无法正确加载,并且永远不会达到4的就绪状态。在这种情况下,我要么手动刷新页面(保持ie真的可见性),要么停止程序,对程序(数据的来源和目的地)进行一些更新。这是相当耗时的,如果每10个网页保持循环打开。
我有一个解决方案,即在时间循环进行过程中,程序应该检查循环执行过程中经过的时间,如果循环持续超过50秒,程序应该挂起当前循环并通过刷新页面重新启动。(如果你有更好的逻辑,请告诉我)。
我不能为这项工作做正确的编码。有人能解决这个问题吗。
发布于 2013-10-16 06:27:19
试试这个(未测试的)
这样做是增加一个变量并检查调用循环的时间。
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 Subhttps://stackoverflow.com/questions/19395224
复制相似问题