Посчитайте, сколько элементов в таблице с getelemtentsbyid - PullRequest
0 голосов
/ 02 апреля 2020

Мне нужно определить мои последние iRow внутри таблицы, как показано на рисунке. Таблица генерируется из фильтра, поэтому число строк меняется каждый раз.

Я использую код для загрузки и сохранения каждого элемента в этой таблице, но иногда он работает отлично, а иногда застревает, потому что в нем меньше 20 элементов, поэтому мне нужно определить последний.

Сначала я пытался избежать отладки с операторами on error goto или on error resume next, но каким-то образом они терпели неудачу. В настоящее время я установил последний iRow to 20, но я хочу изменить его, чтобы он был менее глючным.

Вот мой полный код для этой части, но интересна только первая часть:

Dim TableName As String
Dim myURL As String
'Dim element As Object


    For iRow = 0 To 20  --> I need to define my last iRow
        TableName = "docTypeForm:documentTbl:" & iRow & ":j_idt250"
        'Set element = obJIE.document.getelementbyid("docTypeForm:documentTbl:tb")
        'MsgBox element.count
        On Error GoTo LastFile
                myURL = obJIE.document.getelementbyid(TableName).getelementsbytagname("a")
               ' MsgBox myURL.count

        On Error GoTo LastFile
        TitleJob = obJIE.document.getelementbyid(TableName).innerText

                Dim WinHttpReq As Object
                     Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
                     WinHttpReq.Open "GET", myURL, False
                     WinHttpReq.Send


                     myURL = WinHttpReq.ResponseBody
                             If WinHttpReq.Status = 200 Then
                                 Set oStream = CreateObject("ADODB.Stream")
                                 oStream.Open
                                 oStream.Type = 1
                                 oStream.Write WinHttpReq.ResponseBody
                                 oStream.SaveToFile (MAIN_FOLDER & "\files\" & TitleJob & ".xml")
                                 oStream.Close
                             End If
    next
    LastFile:

enter image description here "tbl: 0,1,2" - строки

1 Ответ

1 голос
/ 02 апреля 2020

См. Комментарии для объяснения. Решение предоставлено QHarr

Dim TableName As String
Dim myURL As String
Dim element As Object
Dim LastEl As Object

Set LastEl = obJIE.document.getElementByid("docTypeForm:documentTbl:tb").getElementsByTagName("tr")

    For iRow = 0 To LastEl.Length - 1
        TableName = "docTypeForm:documentTbl:" & iRow & ":j_idt250"

        Set element = obJIE.document.getElementByid(TableName).getElementsByTagName("a")

        TitleJob = obJIE.document.getElementByid(TableName).innerText
        myURL = element
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...