VBA提取HTML表数据

问题描述:

我收到运行时错误'91':当我尝试运行下面的代码时,对象变量或块变量未设置。从代码中列出的已注释出来的网站提取数据后,此代码工作完美。但是,当我尝试在Google财务网站上使用它时,我会收到该错误。谁能看到我做错了什么?我使用以下VBA:

I am receiving a run-time error '91': object variable or with block variable not set whenever I try to run my code below. This code works perfect when extracting the data off of the commented out website I have listed in the code. However, when I try to use it on the google finance site I get that error. Can anyone see what I am doing wrong? I am using the following 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


查看来源。我不得不改变,

There are more than 1 table tag in the view source. I had to change,

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

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

... to have it use the correct table tag.