html - 由于网络中断,VBA 随机停止执行循环。互联网恢复后如何恢复?

标签 html vba excel internet-explorer

我编写了 VBA 代码来从 Yahoo Finance 中提取数据。在大多数情况下,代码正在执行其工作并提取我想要的内容。然而,时不时地,当它循环遍历不同的公司并且整个代码停止工作时,它会卡住。我怀疑这可能是由于互联网连接在循环通过特定公司时暂时中断而发生的。具体来说,我认为这发生在我的以下代码块中:

For i = 1 To 14
   .navigate "http://finance.yahoo.com/q/hp?s=" & Arrays(i) & "+Historical+Prices"
   Do While .busy: DoEvents: Loop
   Do While .ReadyState <> 4: DoEvents: Loop here

互联网在尝试导航第 i 个公司 (Arrays(i)) 时最有可能中断并导致代码在 Do While .ReadyState <> 4: DoEvents: Loop.ReadyState <>4 无限循环的地方.出于某种原因,即使在互联网重新打开后,代码也无法正常工作,并且一直卡在尝试执行到第 i 个数组的导航时。为什么会这样?有没有办法纠正这个问题?

注意:如果我结束宏的执行并重新启动它,它会完美地工作。

这是供您引用的完整代码块。

Sub GetYahooFinanceTable()
    Dim sURL As String, sResult As String
    Dim oResult As Variant, oData As Variant, R As Long, C As Long, Arrays(30) As String, IE As Object

    Set IE = CreateObject("InternetExplorer.Application")

    For i = 1 To 14
        Arrays(i) = Sheets("List of Companies").Cells(i, 1).Value
    Next i

    Set IE = CreateObject("InternetExplorer.Application")
    With IE
       .Visible = False
       For i = 1 To 14
           .navigate "http://finance.yahoo.com/q/hp?s=" & Arrays(i) & "+Historical+Prices"
           Do While .busy: DoEvents: Loop
           Do While .ReadyState <> 4: DoEvents: Loop
           With .document
              Sheets("Data Pull Adj Close Yahoo").Cells(3, 7 * i) = .getElementById("yfs_l84_" & Arrays(i)).innerText
           End With
       Next i
    End With
Set IE = Nothing
End Sub

最佳答案

我不确定这是否可行。但是您是否尝试过使用 Sleep 函数?我会尝试像这样插入它:

使用.document

Sheets("Data Pull Adj Close Yahoo").Cells(3, 7 * i) =
    .getElementById("yfs_l84_" & Arrays(i)).innerText
Sleep 10000
...

关于html - 由于网络中断,VBA 随机停止执行循环。互联网恢复后如何恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33000409/

相关文章:

javascript - phonegap 3.5.0 和 jquery 移动 1.4.3

excel - 如何在vba中获取excel下拉列表源

excel - VBA - 在打开工作簿之前检查它是否受到保护

excel - 在 VBA 中定义工作表和工作表

javascript - localStorage 派生变量在最初相减时充当整数,但在最初相加时充当字符串

html - 构建与 IE8 兼容的可调整大小的图形/图表时出现问题

vba - 如何在VBA上按单元格内容获取平均值

vba - 基于自动字体颜色的Excel总和

excel - 在 Excel 中使用排名函数

html - 如何在 Google Chrome 检查器中插入 HTML 元素?