VBA excel对于电子表格中的表格匹配单元格中的每一行与网页表格中的单元格

时间:2013-11-27 23:36:09

标签: html excel vba excel-vba

这是重新组织我的问题的转发,但是:

我正在尝试将我的电子表格单元格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标签吗?

1 个答案:

答案 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")