【问题标题】:XMLHTTP Data extract in excel - unable to extract the correct dataexcel中的XMLHTTP数据提取 - 无法提取正确的数据
【发布时间】:2016-04-01 18:09:09
【问题描述】:

我的 VBA 知识有限,我正在努力学习,但我被下面的代码卡住了。我的问题是我正在尝试在此网页上提取包含在表类“Standard_tabelle”中的结果表。

Sub seasonres()

Sheets("Vs").Select
Range("A1").Select
Dim url As String, links_count As Integer
Dim i As Integer, j As Integer, row As Integer
Dim XMLHTTP As Object, html As Object
Dim tr_coll As Object, tr As Object
Dim td_coll As Object, td As Object

  url = "http://www.worldfootball.net/teams/manchester-united/2011/3/"

    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
    XMLHTTP.Open "GET", url, False
    XMLHTTP.send

    Set html = CreateObject("htmlfile")
    html.body.innerHTML = XMLHTTP.ResponseText

    Set tbl = html.getelementsbytagname("Standard_tabelle")

    Set tr_coll = tbl(0).getelementsbytagname("TR")

    For Each tr In tr_coll
        j = 1
        Set td_col = tr.getelementsbytagname("TD")

        For Each td In td_col
            Cells(row + 1, j).Value = td.innerText
            j = j + 1
        Next
        row = row + 1
    Next
End Sub

但是下面的代码一直给我一个运行时错误,当我调试它时它指向:

Set tr_coll = tbl(0).getelementsbytagname("TR")

是否有人可以帮助我更正此代码以提取表格或向我展示其他有助于解决此问题的代码?

提前非常感谢。 沙希德

【问题讨论】:

  • Set tbl = html.getelementsbyclassname("Standard_tabelle")
  • @TimWilliams - 感谢您做出明显的改变。我试过了,但它给了我一个运行时错误'438'“对象不支持这个属性或方法”。我不确定是不是说 xmlhttprequest 不能使用 getelementsbyclassname?
  • @TimWilliams - 完美,效果很好!!非常感谢!

标签: vba excel xmlhttprequest getelementsbyclassname data-extraction


【解决方案1】:

我想htmlfile 可能不支持getElementsByclassname...

试试这个解决方法

Sub seasonres()

    Dim url As String, links_count As Integer
    Dim i As Integer, j As Integer, row As Integer
    Dim XMLHTTP As Object, html As Object
    Dim tr_coll As Object, tr As Object
    Dim td_coll As Object, td As Object, tbl, td_col, objT

    url = "http://www.worldfootball.net/teams/manchester-united/2011/3/"

    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
    XMLHTTP.Open "GET", url, False
    XMLHTTP.send

    Set html = CreateObject("htmlfile")
    html.body.innerHTML = XMLHTTP.ResponseText

    Set tbl = html.body.getelementsbytagname("table")

    For Each t In tbl
        If t.classname = "standard_tabelle" Then
            For Each tr In t.getelementsbytagname("TR")
                j = 1
                For Each td In tr.getelementsbytagname("TD")
                    Cells(row + 1, j).Value = td.innerText
                    j = j + 1
                Next
                row = row + 1
            Next
            row = row + 3
        End If
    Next


End Sub

【讨论】:

    猜你喜欢
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多