Я разрабатываю макрос в Macro Express Pro, который использует VBScript для очистки таблицы HTML для сбора данных. Данные, которые я собираю, находятся в столбце FLN. Я хочу создать список, который пользователь может выбрать из FLN, затем они могут собрать остальные детали в строке для использования в других приложениях. Список выглядит следующим образом:Использование DOM для поиска последней строки в таблице HTML
Моя проблема заключается в том, что список показывает только семь позиций. Таблица, которую я использую для этого примера, имеет восемь строк. То, что происходит, я зацикливаю, чтобы создать этот список, но когда я закончу копирование последнего FLN и перехожу к следующей строке в таблице (выделено желтым цветом), я получаю требуемую ошибку объекта.
мне нужно, чтобы быть в состоянии прочитать эту строку, так что я могу захватить все строки в таблице, а затем выйти из цикла, когда я достигаю выделенную линию. К сожалению, создатели сайта со столом никогда не называли эту таблицу. Существует div
, у которого есть ID (div id="pnlBtn"
). Я попытался найти этот идентификатор и получить объектную ошибку.
Я сейчас пытаюсь найти последнюю строку в таблице, но это дает мне ошибку объекта. Я знаю, что часть моего кода работает, поскольку я смог создать список выше. Это было сделано путем установки счетчика I
в Do Until...Loop
на 8, который производит только семь строк. Если я установил I
в 9, я получаю ошибку объекта.
Вот код, я работаю с:
tdNode = 50
FLNDCC = objIE.Document.GetElementsByTagName("table")(0).GetElementsByTagName("td")(tdNode).GetElementsByClassName("txt_input1")(0).Value
I = 1
List = ""
intExitCount = 1
Do Until I = 8
If FLNDCC = NewFLNDCC Then
Exit Do
End If
If NewFLNDCC <> "" Then
FLNDCC = NewFLNDCC
End If
FLNDCC = I & ". " & FLNDCC
List = List & FLNDCC & vbCrLf
FLNDCC = Replace(FLNDCC, I & ". ", "")
TestRow = objIE.document.getElementsByTagName("tr")
For j = 0 To TestRow.length
MsgBox j
Next
I = I + 1
NewFLNDCC = objIE.Document.GetElementsByTagName("table")(0).GetElementsByTagName("td")(tdNode).GetElementsByClassName("txt_input1")(0).Value
If IsEmpty(NewFLNDCC) = True Then
Exit Do
End If
intExitCount = intExitCount + 1
If intExitCount = 10 Then
MsgBox "Do loop in VERIFY_HOV subroutine stuck in a loop." & vbCrLf & "Please submit an issue request with this message.", 48, "Stuck in Do Loop"
SetEverythingToNothing
End If
Loop
If I > 1 Then
Opt = InputBox("Please select the FLNDCC you want to work with:" & vbNewLine & List & vbNewLine, "Select an FLNDCC")
If IsEmpty(Opt) = True Then
Wscript.Echo "EXIT"
SetEverythingToNothing
End If
Opt = Opt - 1
tdNode = 50 + (Opt * 21)
Else
tdNode = 50
End If
FLNDCC = objIE.Document.GetElementsByTagName("table")(0).GetElementsByTagName("td")(tdNode).GetElementsByClassName("txt_input1")(0).Value
Есть верный способ, чтобы найти последнюю строку таблицы, которая не производит ошибку объекта?