Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Manipular dois selects dependentes com Internet Controls

A Web está aí, não há como negar. Ela é onipresente em praticamente toda operação eletrônica realizada nos dias de hoje. Como não podia ser diferente, o Excel, ferramenta máxima para analistas e profissionais das mais diversas áreas do mercado precisa estar alinhado com esta necesssidade. E ele está! Neste forum, o debate é focado em expor dúvidas, sugestões, modelos de código e exemplos de uso do Excel na Integração com tecnologias Web.
gustavoh
Colaborador
Colaborador
Mensagens: 14
Registrado em: Sex Set 18, 2020 1:13 pm

Manipular dois selects dependentes com Internet Controls

Mensagem por gustavoh »

Olá pessoal, estou manipulando esses dois selects do link abaixo com o Internet Controls, os dados do segundo só carregam quando alguma opção do primeiro é selecionada. Eu consegui selecionar a opção desejada no primeiro, mas quando vou selecionar a opção do segundo elas não foram atualizadas, ainda só consta a padrão, como se eu não tivesse selecionado nada no primeiro select. Como que eu faço para atualizar o conteúdo da página ?

Código: Selecionar todos

Sub extracao()

    Dim ie As InternetExplorer

    Dim elemento As Variant

    Set ie = New InternetExplorer

    ie.Visible = True

    ie.navigate "https://apps2.correios.com.br/faleconosco/app/cadastro/reclamacao/index.php?codigo=NDYz"

    Do While ie.readyState <> READYSTATE_COMPLETE

        DoEvents

    Loop

    Set elemento2 = ie.document.getElementById("codMotivoAssunto")
    Set elemento3 = elemento2.getElementsByTagName("option")(1)
    Application.Wait Now + TimeValue("00:00:02")
    elemento3.Selected = True
    
    'select
    Application.Wait Now + TimeValue("00:00:02")
    Set elemento4 = ie.document.getElementById("codSubmotivo2")
    MsgBox (elemento4.innerText)
    Application.Wait Now + TimeValue("00:00:02")
    Set elemento5 = elemento4.getElementsByTagName("option")(0) 'aqui se eu coloco option1 ele da erro falando que não existe
    MsgBox (elemento5.innerText)
    elemento5.Selected = True


End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Raygsson
Manda bem
Manda bem
Mensagens: 118
Registrado em: Sex Jan 31, 2020 8:06 pm

Re: Manipular dois selects dependentes com Internet Controls

Mensagem por Raygsson »

Gustavo

Utilize o FireEvent ("onChange") para atualizar um elemento.
Também pode selecionar as opções pelo seu Value. O seu código fica melhor assim:

Código: Selecionar todos

Sub extracao()

    Dim ie As InternetExplorer
    Set ie = New InternetExplorer

    ie.Visible = True
    ie.navigate "https://apps2.correios.com.br/faleconosco/app/cadastro/reclamacao/index.php?codigo=NDYz"

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

    ie.document.all("codMotivoAssunto").Value = "338"
    ie.document.all("codMotivoAssunto").FireEvent ("onChange")
    
    Application.Wait Now + TimeValue("00:00:01")
    
    ie.document.all("codSubmotivo2").Value = "240"
    ie.document.all("codSubmotivo2").FireEvent ("onChange")

End Sub


gustavoh
Colaborador
Colaborador
Mensagens: 14
Registrado em: Sex Set 18, 2020 1:13 pm

Re: Manipular dois selects dependentes com Internet Controls

Mensagem por gustavoh »

Olá Raygsson, muito obrigado pela ajuda.
Eu não conhecia esse FireEvent ("onChange"), me ajudou demais, novamente muito obrigado!!


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder