VBA excel Для каждой строки таблицы соответствует ячейка в таблице с ячейкой в таблице веб-страниц

0

Это своего рода репозиция для реорганизации моего вопроса, но:

Я пытаюсь сопоставить таблицу электронных таблиц с ячейками B1 со всеми ячейками в 10-м столбце таблицы на веб-странице. Если theres соответствует, я хочу скопировать этот текст ячейки ячейки 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" относится только к "getElementsbyTagName (" tr "), который я определил в наборе colRows. он не будет также захватывать теги td, заключенные в квадратные скобки в tr справа?

  • 0
    Что такое сообщение об ошибке?
  • 0
    Объект не поддерживает этот метод или свойство
Показать ещё 3 комментария
Теги:
excel-vba
excel

1 ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню