刷新网页,而在VBA excel中未正确加载网页

时间:2013-10-16 04:24:28

标签: excel vba excel-vba

我创建了一个从网站中提取数据并保存在电子表格中的程序。但我遇到的主要问题是挂起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秒,程序应暂停当前循环并通过刷新再次启动页。 (如果你有更好的逻辑,请告诉我。)

我无法为此工作做正确的编码。任何人都可以解决这个问题......

1 个答案:

答案 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