【问题标题】:VBA excel For each row in table match cell in spreadsheet with cell in webpage tableVBA excel对于表格中的每一行匹配电子表格中的单元格与网页表格中的单元格
【发布时间】:2013-11-28 21:26:29
【问题描述】:

这是一种重新组织我的问题的重新发布,但是:

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

【问题讨论】:

  • 错误信息是什么?
  • 对象不支持此方法或属性
  • Set xcel = element.getElementsByTagName("td")
  • Object variable not set error on line If Range("B1")....
  • 运行它以引用单行我必须将其写为 Range("B1").text 否则它不会读取单元格内容...我假设因为单元格被格式化为一般不是数字。刚试了一下,还是失败了。

标签: html vba excel


【解决方案1】:

我们可以有更多成功的机会:

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

无论如何,我们不能使用这个(不好):

Set xcel = colRows.getElementsByTagName("td")

因为 colRows 是行的集合,但不是单个行对象。不过,你可以使用这个(好):

Set xcel = colRows.Item(0).getElementsByTagName("td")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-29
    • 2021-02-20
    • 2022-11-28
    • 2016-10-21
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多