【问题标题】:Dynamic URL with cell value带有单元格值的动态 URL
【发布时间】:2016-02-06 11:17:31
【问题描述】:

我有代码使用根据单元格值更改的动态 URL 来提取团队信息。

我不断收到运行时错误“91”说“对象变量或未设置块变量”,当我调试时它指向该行

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

此代码适用于其他数据提取,但由于某种原因现在给我这个错误。

Sub VS()

Dim src As Worksheet, tgt As Worksheet
Dim url As String, team1 As String
Dim team2 As String, 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

Set src = Sheets("Match-up")
Set tgt = Sheets("vs")
team1 = src.Range("b1")
team2 = src.Range("aa1")

    url = "http://www.premierleague.com/en-gb/matchday/matches/2015-2016/epl.past-meetings.html/" & team1 & "-vs-" & team2

    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("Table")

    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

【问题讨论】:

  • @MacroMarc 谢谢!是的,这很好用

标签: excel xmlhttprequest runtime-error dynamic-url vba


【解决方案1】:

这意味着 tbl 变量设置为 Nothing。这表明您遇到了一个 404 页面,该页面没有您期望的表格。

确保您的团队返回有效页面。 它适用于我使用:

url = "http://www.premierleague.com/en-gb/matchday/matches/2015-2016/epl.past-meetings.html/southampton-vs-west-ham"

顺便说一句,您将 td_col 拼错为一个“l”(但这没关系,因为您没有使用 Option Explicit,但要小心!!)。此外,您没有声明不影响这一点的 tbl 变量,因为您没有使用显式选项。这意味着您有时必须声明大量变量 - 这些变量无法更改类型,但如果您要编写大量 VBA 代码,我建议您使用此选项。

使用 F8 单步执行代码,查看团队字符串的评估结果。然后将生成的字符串硬编码到浏览器中,看看会发生什么......

【讨论】:

    猜你喜欢
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多