VBA提取HTML表数据

时间:2016-01-09 23:22:05

标签: excel vba excel-vba

我收到运行时错误'91':每当我尝试运行下面的代码时,对象变量或块变量都没有设置。当我从代码中列出的注释掉的网站中提取数据时,此代码非常有用。但是,当我尝试在谷歌财务网站上使用它时,我得到了这个错误。谁能看到我做错了什么?我使用以下VBA:

Sub test()

Dim oDom As Object: Set oDom = CreateObject("htmlFile")
Dim x As Long, y As Long
Dim oRow As Object, oCell As Object
Dim data

y = 1: x = 1

With CreateObject("msxml2.xmlhttp")
'http://www.bundesbank.de/Navigation/EN/Statistics/Time_series_databases/Macro_economic_time_series/its_details_value_node.html?tsId=BBNZ1.Q.DE.Y.G.0000.A&listId=www_s311_b4_vgr_verw_nominal
    .Open "GET", "http://finance.yahoo.com/q/hp?s=GOOG+Historical+Prices", False
    .Send
    oDom.body.innerHtml = .responseText
End With

With oDom.getElementsByTagName("table")(0)
    ReDim data(1 To .Rows.Length, 1 To .Rows(1).Cells.Length)
    For Each oRow In .Rows
        For Each oCell In oRow.Cells
            data(x, y) = oCell.innerText
            y = y + 1
        Next oCell
        y = 1
        x = x + 1
    Next oRow
End With

Sheets(1).Cells(1, 1).Resize(UBound(data), UBound(data, 2)).Value = data
End Sub

1 个答案:

答案 0 :(得分:1)

视图源中有多个表标记。我不得不改变,

oDom.getElementsByTagName("table")(0)
' to
oDom.getElementsByTagName("table")(14)

...让它使用正确的表格标签。