Excel VBA Page Pagination, ДЛЯ L OOP не работает - PullRequest
0 голосов
/ 10 апреля 2020

Я использую For L oop для извлечения некоторых данных с сайта, с некоторым кодом для навигации по страницам. У меня проблема в том, что после перехода кода на следующую страницу For L oop ничего не извлекает.

Что работает

  • FOR L OOP отлично работает на первой странице
  • Код разбиения на страницы отлично работает при переходе к следующая страница / с.

Проблема *

  • После перехода кода на следующую страницу FOR L OOP НЕ является работая, он не будет извлекать данные.

Я не могу разобраться

Это то, с чем я работаю, за исключением моего кода, поскольку он был слишком длинным

Private Sub CommandButton4_Click()
'dimension (declare or set aside memory for) our variables
Dim Html As HTMLDocument
Dim objIE As Object
Dim y As Integer 'integer variable we'll use as a counter
Dim result As String 'string variable that will hold our result link
Dim pageNumber As Long ' page no.
Dim nextPageElement As Object 'page element
Dim lastrow As Long
Dim HtmlText As Variant ' for html data

Dim wsSheet As Worksheet ' WorkSheet
Dim wb As Workbook
    Set wb = ThisWorkbook
         Set wsSheet = wb.Sheets("Sheet3")

'+++++ Internet Explorer ++++++
Set objIE = New InternetExplorer 'initiating a new instance of Internet Explorer and asigning it to objIE
        objIE.Visible = True 'make IE browser visible (False would allow IE to run in the background)
    objIE.navigate Sheets("Sheet3").Range("A2").Value & Replace(Worksheets("Sheet3").Range("B2") & Range("C2").Value, " ", "+") 'navigate IE to this web page

Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop 'wait here a few seconds while the browser is busy

y = 2

    Set Html = objIE.document
        Set elements = Html.getElementsByClassName("sresult lvresult clearfix li shic") ' parent CLASS

    'FOR LOOP
    For Each element In elements
      DoEvents

'############################ My code here #################


'COUNTER AND NEXT ELEMENT
y = y + 1
Next element

' #################### START OF Page Navigation will delay ###############
Do
        'Number Of Pages to navigate come from sheet3 - D2
        If pageNumber >= Replace(Worksheets("Sheet3").Range("D2").Value, " ", "+") Then Exit Do
            Set nextPageElement = Html.getElementsByClassName("gspr next")(0)
                If nextPageElement Is Nothing Then Exit Do

            'Random delay from Max number entered in Sheet3 E2
             Application.Wait Now + TimeSerial(0, 0, Application.RandBetween(1, Worksheets("Sheet3").Range("E2").Value))
             nextPageElement.Click 'next web page
             Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

            'SECOND Random delay from Max number entered in Sheet4 f2
             Application.Wait Now + TimeSerial(0, 0, Application.RandBetween(1, Worksheets("Sheet3").Range("F2").Value))
            Set Html = objIE.document
                pageNumber = pageNumber + 1
Loop

' ########################## End of Page Navigation with Delays ###############

objIE.Quit ' end and clear browser
Set ie = Nothing
Set htmlDoc = Nothing
Set nextPageElement = Nothing
Set div = Nothing
Set link = Nothing

MsgBox "All Done"

End Sub

Я пытался добавить это в конец "pageNumber = pageNumber + 1" , чтобы посмотреть, будет ли это работать, но не повезло

            pageNumber = pageNumber + 1

   Set elements = Html.getElementsByClassName("sresult lvresult clearfix li shic")
      For Each element In elements
        DoEvents
           Next element
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...