Макрос для изменения страницы на сайте с «нумерацией страниц» - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь запрограммировать макрос в Excel, чтобы изменить страницу в следующей сети: https://cebra.com.ar/category/18/Disfraces-and-Accesorios.html

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

Ниже приведен код, который я запрограммировал, и он работает довольно хорошо, только для того, чтобы в нем не было последнего клика.

Может кто-нибудь помочь мне разработать этомакрос?Заранее большое спасибо!

Sub change_webpage()

    Dim ie As InternetExplorer

    Dim lis As IHTMLElementCollection

    Dim nextLi As HTMLLIElement, i As Long

    sheetnom = ActiveSheet.Name

    link = "https://cebra.com.ar/category/18/Disfraces-y-Accesorios.html"

    Worksheets(sheetnom).Activate

    Set ie = New InternetExplorer

    ie.Visible = True

    ie.navigate link

    Do While ie.readyState <> READYSTATE_COMPLETE

        Application.StatusBar = "Loading Web page …"

        DoEvents

    Loop

    newNum = -1

    Set objIE = New InternetExplorer

    objIE.navigate fullUrl

    Do While ie.Busy = True Or ie.readyState <> 4: DoEvents: Loop

    Set currPage = ie.document

    Do Until oldNum = newNum

        oldNum = newNum

        newNum = currPage.getElementsByClassName("box-data").length

        Application.Wait Now + TimeSerial(0, 0, 2)

        currPage.parentWindow.scrollBy 0, 100000

        Application.Wait Now + TimeSerial(0, 0, 2)

        If newNum > 400 Then newNum = 400

    Loop

    Set lis = ie.document.getElementsByClassName("pagination")

    Set nextLi = Nothing

    i = 0

    While i < lis.length And nextLi Is Nothing

        If lis(i).innerText = "2" Then Set nextLi = lis(i)

        i = i + 1

    Wend

    If Not nextLi Is Nothing Then

        nextLi.Change = Active

    End If

    'ie.Quit

    link = Empty

    Sheets(sheetnom).Select

    Range("A1").Select

    MsgBox "Done"

End Sub

1 Ответ

0 голосов
/ 26 мая 2019

Страница не загружается для меня должным образом, но что-то вроде следующего должно работать, где вы найдете количество страниц и нажимаете кнопку > , пока не исчерпаете все страницы.

Option Explicit
'VBE > Tools > References: Microsoft Internet Controls

Public Sub ClickThroughPages()
    Dim ie As New InternetExplorer, numberOfPages As Long, page As Long
    With ie
        .Visible = True
        .Navigate2 "https://cebra.com.ar/category/18/Disfraces-y-Accesorios.html"

        While .Busy Or .readyState < 4: DoEvents: Wend

        With .document

            numberOfPages = .querySelectorAll(".setPage").length

            'do something with page 1
            If numberOfPages > 1 Then
                For page = 2 To numberOfPages

                    .querySelector(".fa-angle-right").Click

                    While ie.Busy Or ie.readyState < 4: DoEvents: Wend

                    'do something with next pages
                Next
            End If
        End With
        Stop
        .Quit
    End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...