我试图运行以下代码段:
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
需要点击这些点击才能访问其成员。
更新 - 根据建议,表格标记已被搜索两次,现在只搜索一次。错误仍在继续。
答案 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) ....