这是重新组织我的问题的转发,但是:
我正在尝试将我的电子表格单元格B1文本与网页上表格第10列中的所有单元格进行匹配。如果匹配,我想复制该行的单元格4文本。到目前为止,我有:
Dim colRows As Object
Dim objDataGrid As Object
Dim xobj1 As Object
Dim xcel As Object
Set objDataGrid = IE.Document.getElementById("DataGridReservations")
Set colRows = objDataGrid.getElementsByTagName("tr")
For Each element In colRows
Set xcel = colRows.getElementsByTagName("td")
If Range("B1").Text = xcel.Item(9).innertext Then
Range("H" & (ActiveCell.Row)) = xcel.Item(3).innertext
Else
Range("H" & (ActiveCell.Row)) = "0"
End If
Exit For
Next
我在第
行收到错误set xcel = colRows.getElementsByTagName....
拔掉我的头发。另外,为了确保“对于colRows中的每个元素”元素,只会引用我在set colRows中定义的“getElementsbyTagName(”tr“)”。它也不会拾取tr中的td标签吗?
答案 0 :(得分:0)
我们可以有更多成功的机会:
Sub sof20255214WebpageCell()
Dim colRows As Object
Dim objDataGrid As Object
Dim xobj1 As Object
Dim element
Dim xcel As Object
Dim IE
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate "http://www.example.com/DataGridPage.php"
While (IE.Busy Or IE.READYSTATE <> 4)
DoEvents
Wend
Set objDataGrid = IE.Document.getElementById("DataGridReservations")
Set colRows = objDataGrid.getElementsByTagName("tr")
For Each element In colRows
Set xcel = element.getElementsByTagName("td")
If Range("B1").Text = xcel.Item(9).innerText Then
Range("H" & (ActiveCell.Row)) = xcel.Item(3).innerText
Else
Range("H" & (ActiveCell.Row)) = "0"
End If
Exit For
Next
IE.Quit
End Sub
无论如何,我们不能使用这个(BAD):
Set xcel = colRows.getElementsByTagName("td")
因为colRows是行的集合,而不是单个行对象。不过,你可以使用这个(好):
Set xcel = colRows.Item(0).getElementsByTagName("td")