运行时错误91:未设置对象变量或块变量

时间:2014-08-21 19:25:25

标签: vba excel-vba excel

我试图运行以下代码段:

Sub Reliance()

    Dim htmS As Object

    Set htmS = CreateObject("htmlFile")

    With CreateObject("WinHttp.WinHttpRequest.5.1")
        .Open "GET", "http://www.rcom.co.in/Rcom/personal/prepaid/PlansandPacks.html", False
        .send
        htmS.body.innerhtml = .responsetext
    End With

    htmS.getElementById("chCDMA").Click
    htmS.getElementsByName("circleStatecdma")(0).Options(1).Click
    htmS.getElementById("_getCheckedPack").getElementsByTagName("table")0).getElementsByTagName("tbody")(0).getElementsByTagName("tr")(0).getElementsByTagName("td")(0).Click

    Set Pages = htmS.getElementById("_getCheckedPack").getElementsByTagName("table")0).getElementsByTagName("tbody")(0).getElementsByTagName("tr")(0).getElementsByTagName("td")

    ActiveWorkbook.ActiveSheet.Select

    Set newPages = htmS.getElementById("getCDMATopUpVal").getElementsByTagName("div")(0).getElementsByTagName("table")

    Sheets("Sheet1").Cells(1, 1).Value = newPages(0).getElementsByTagName("tbody")(0).getElementsByTagName("tr")(0).getElementsByTagName("td")(0).innerText

End Sub

并收到以下错误:

runtime error 91: object variable or with block variable are not set

仅将Pages放入工作表单元格时未发生错误。这仅由newPages发生。我该如何修复错误?

额外信息Pages正在访问不需要按钮点击/表单提交的内容。 newPages需要点击这些点击才能访问其成员。

更新 - 根据建议,表格标记已被搜索两次,现在只搜索一次。错误仍在继续。

1 个答案:

答案 0 :(得分:0)

只是一个猜测:我检查了你正在解析的页面,以及带有元素" getCDMATopUpVal"的td。不包含任何div元素,因此您无法获得任何结果。

更新 - 如评论中所述,div和table将在点击时创建。接下来的猜测是:

Set newPages = htmS.getElementById("getCDMATopUpVal").
getElementsByTagName("div")(0).getElementsByTagName("table")

所以newPages已经是table-elements。 下一行是

Sheets("Sheet1").Cells(1, 1).Value = newPages(0).
getElementsByTagName("table")(0).getElementsByTagName("tbody")(0) ....

但是根据定义,newPages(0)已经是一个表。您是否尝试将其调整为

 Sheets("Sheet1").Cells(1, 1).Value = newPages(0).
 getElementsByTagName("tbody")(0) ....