• 0
Sign in to follow this  
guirodrigues

Copiando nome de todos escritórios da XP para uma planilha

Question

Olá pessoal,

Preciso realizar uma macro para copiar cada um dos escritórios da XP no Brasil para uma planilha, porém estou com dúvida no começo do código.

Realizei duas subs, uma que abre o IE e outra que processa o código HTML. O site em questão (https://www.xpi.com.br/sobre-a-xp/encontre-um-escritorio/) conta com dois objetos de tag "select", um que se refere aos estados ("states") e outro que se refere à cidade ("cities").

Minha dúvida é como atualizar o objeto "cities" ao escolher um estado da lista. Meu código até aqui é esse, porém ao selecionar o estado as cidades possíveis não são atualizadas, e, com isso, a minha cidade sempre retorna "Selecione a cidade":

Sub EscritoriosXPIE()

    'HABILITAR REFERÊNCIAS: Microsoft Internet Control, Microsoft HTML Object Library
    
    Dim IE As SHDocVw.InternetExplorer, HTMLDoc As MSHTML.HTMLDocument, HTMLButton As MSHTML.IHTMLElementCollection
    
    'definindo objeto IE
    Set IE = New SHDocVw.InternetExplorer
    
    'abrindo IE
    With IE
        .Visible = True
        .navigate "https://www.xpi.com.br/sobre-a-xp/encontre-um-escritorio/"
        'pausar a macro enquanto carrega o navegador
        While .readyState <> READYSTATE_COMPLETE
        Wend
    End With
    
    'abrindo o código HTML
    Set HTMLDoc = IE.Document
    Set HTMLButton = HTMLDoc.getElementsByTagName("button")
    
'    'printando número de botons
'    Debug.Print HTMLButton.Length
    
    'pesquisar escritórios XP
    ProcessarHtmlPage HTMLDoc
    
End Sub

Sub ProcessarHtmlPage(HTMLPage As MSHTML.HTMLDocument)
    
    'HABILITAR REFERÊNCIA: Microsoft HTML Object Library
    Dim HTMLStates As MSHTML.IHTMLElement, HTMLCities As MSHTML.IHTMLElement
    Dim HTMLOptionState As MSHTML.IHTMLElement, HTMLOptionCity As MSHTML.IHTMLElement
    Dim HTMLButtons As MSHTML.IHTMLElementCollection
    Dim cont_states As Long, cont_cities As Long, state As Long, city As Long
    
    'limpando a plan de trabalho
    Worksheets("Resumo").Select
    Cells.Delete
    
    'definindo objetos HTMLState, HTMLCity e HTMLButton
    Set HTMLStates = HTMLPage.getElementById("states")
    Set HTMLButtons = HTMLPage.getElementsByTagName("buttons")
    
    'definindo número de estados
    cont_states = HTMLStates.Length
    
    'loop por todos os estados e cidades
    For state = 0 To cont_states
        Debug.Print HTMLStates.Item(state).innerText
        HTMLStates.selectedIndex = state
        Set HTMLCities = HTMLPage.getElementById("cities")
        cont_cities = HTMLCities.Length
        For city = 0 To cont_cities
            On Error Resume Next
            Debug.Print HTMLCities.Item(city).innerText
        Next city
    Next state

End Sub

Obrigado desde já pela ajuda!

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this