Ir para conteúdo
Fórum Script Brasil
  • 0

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


guirodrigues

Pergunta

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!

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...