Это немного псевдокод, но он описывает выделение количества страниц и затем нажатие следующей кнопки до тех пор, пока не будут просмотрены все страницы.Я использую селектор идентификатора для следующей кнопки, так как он работает быстрее и надежнее, чем селектор составного класса.
Я работаю над ie.document, чтобы исключить всплывающие исключения из устаревших элементов из-за ошибок при циклическом перемещении по страницам.
В зависимости от того, как вы хотите записать информацию таблицы, вы можете хранить информацию в массиве;в противном случае возможно выписать таблицы во время цикла, найдя следующую доступную строку в листе ..... Я покажу, как записать следующую доступную строку в предыдущем ответе SO здесь . В этом ответе показано, как использовать буфер обмена для публикации таблицы в следующей строке во время цикла.
Лучше было бы, если бы вы могли проходить проверку подлинности и получать всю информацию через XHR просит, но невозможно сказать, возможно ли это в настоящее время.
Option Explicit
Public Sub test()
Dim ie As New InternetExplorer, numPages As Long, length As Long
With ie
.Visible = True
.navigate "loginURL"
While .Busy Or .readyState < 4: DoEvents: Wend
'login stuff here ....
While .Busy Or .readyState < 4: DoEvents: Wend
With .document
length = .querySelectorAll(".page-link").length
numPages = CLng(.querySelectorAll(".page-link").item(length - 3).innerText)
'Assume on page 1 and extract last page number from length -2 (ignoring data-dt-idx="10" and data-dt-idx="9"
'do something with page 1 then click through next button for num of pages
For i = 2 To numPages
.querySelector("#activitylog_table_next").Click
.querySelector("[data-dt-idx='" & i + 1 & "']").click 'alternate
While ie.Busy Or ie.readyState < 4: DoEvents: Wend
'do something with other pages
Next
Stop '<=delete me later
End With
.Quit
End With
End Sub
Чтобы установить 500 на страницу
ie.document.querySelector("[value='500']").Selected = True