Ir para conteúdo
Fórum Script Brasil

guirodrigues

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Posts postados por guirodrigues

  1. 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!

×
×
  • Criar Novo...