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

[RESOLVIDO] - combobox dependente

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.
aecduarte
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Sáb Fev 20, 2016 10:48 am

[RESOLVIDO] - combobox dependente

Mensagem por aecduarte »

Prezados,

Estou montando uma macro para extrair dados da web. Nesse sentido, para extrair tais dados, é necessário:
1- Entrar no site "x" (etapa ok)
2- Selecionar dados em 5 combobox (parcial)
A macro está selecionado o dado na combobox mas há um problema: em uma delas há um evento onchange que está resolvido, no entanto, há algum evento ou função adicional que, ainda, não identifiquei.
Eu seleciono o dado da combobox nº 2 mas não atualiza a lista da combobox nº 3.

Alguma sugestão?

Sub x()
Dim ie As InternetExplorer
Dim C
redo:


Set ie = New InternetExplorer
ie.Visible = True
ie.Navigate "http://www.aneel.gov.br/aplicacoes/indi ... ?regiao=SU"

Do Until ie.ReadyState = READYSTATE_COMPLETE
Loop


ie.Document.all("tipo").Value = "d" 'Dados

ie.Document.all("tipoE").Value = "c" 'Concessionárias
ie.Document.all("tipoE").FireEvent ("onchange")

ie.Document.all("distribuidora").Value = "396" 'seleciona a distribuidora
ie.Document.all("periodo").Value = "2015"
'ie.Document.All.Item("distribuidora").Item(1).Selected = True

ie.Document.getElementById("submit_obter_dados").Click

Set ie = Nothing

Att.,
Alberto - Extrair dados web.rar
macro
(13.61 KiB) Baixado 339 vezes
Editado pela última vez por aecduarte em Sex Mar 25, 2016 5:50 pm, em um total de 3 vezes.


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.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Web - combobox dependente

Mensagem por webmaster »

Alberto,

Olhei muito por cima, mas, a simples mudanca no combo deveria disparar o onchange, sem a necessidade faze-lo manualmente. Pode ser um problema do site.

Tentou o Selenium?

Att


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Web - combobox dependente

Mensagem por Mikel Silveira Fraga »

Boa tarde a todos.

Tomás, a alguns dias atrás eu havia trocado uma MP com o Duarte sobre este problema. Já tinha passado pelo mesmo em um trabalho que fiz no ano passado, para uma empresa de Revenda da Telefonia e Internet.

Eu fiz um outro teste que foi atribuir o Elemento Select para um Objeto HtmlSelectElement da biblioteca Microsoft HTML Object, mas nesse caso me deparei com alguns erros de versão do Internet Explorer, onde alguns métodos funcionam em versões anteriores ao IE11.


Duarte, como disse o Tomás, acredito que utilizar o Selenium VBA seria a melhor opção. Veja as possibilidades do uso deste nas máquinas onde precisa rodar a rotina e nos retorne.

Se precisar de ajuda, estou no aguardo.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Web - combobox dependente

Mensagem por Mikel Silveira Fraga »

Boa tarde a todos.

Tomás, bingo. Sua sugestão estava certíssima. Montei a rotina e nem tive trabalho.

Duarte, utilizando o Selenium VBA, o acesso a esta rotina funcionou perfeitamente. Segue o código abaixo:

Código: Selecionar todos

Option Explicit

Dim swdBrowser As New SeleniumWrapper.WebDriver
Dim swsElement As SeleniumWrapper.Select

Sub x()

    With swdBrowser
    
        .Start "chrome", "http://www.aneel.gov.br/"
        .Open "aplicacoes/indicadores_de_qualidade/pesquisa.cfm?regiao=SU"
        
        .setImplicitWait 5000
        
        Set swsElement = .findElementByName("tipo")
        swsElement.selectByValue "d"
        .setImplicitWait 5000
        
        Set swsElement = .findElementByName("tipoE")
        swsElement.selectByValue "c"
        .setImplicitWait 5000
        
        Set swsElement = .findElementByName("distribuidora")
        swsElement.selectByValue "396"
        .setImplicitWait 5000
        
        Set swsElement = .findElementByName("periodo")
        swsElement.selectByValue "0"
        .setImplicitWait 5000
        
        Set swsElement = .findElementByName("ano")
        swsElement.selectByValue "2014"
        .setImplicitWait 5000

        .findElementById("submit_obter_dados").Click
        
    End With

End Sub
Para utilizar o Selenium, é interessantes dar uma olhada nos vídeos postados pelo Tomás sobre o uso dessa biblioteca. Seguem links abaixo:
- Fórum: viewtopic.php?f=23&t=4161
- Blog: http://www.tomasvasquez.com.br/blog/mic ... -webdriver
- YouTube: https://www.youtube.com/watch?v=hk-65p2 ... e=youtu.be

Veja se essa solução irá atender suas necessidades.

Qualquer dúvida, a disposição.

Abraços.


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.


aecduarte
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Sáb Fev 20, 2016 10:48 am

Re: Web - combobox dependente

Mensagem por aecduarte »

Muito obrigado Tomás e Mikel. Me ajudaram muito.
Realmente, a biblioteca do ie no vba não funciona muito bem e o Selenium é a saída. Muito bom o material do site sobre o selenium.
Pena que o plugin VBA/VBS Formatters parou de funcionar.

Duvida: Eu tive problema com a combobox "periodo". Aqui, ele não consegue selecionar a combobox com value=0, que é o caso do período. Em outras palavras, nesse caso, a combobox fica igual "escolha um periodo". Alguma sugestão? é possível selecionar pelo nome do Label? exemplo label=Anual;

Grato


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: [RESOLVIDO] - combobox dependente

Mensagem por Mikel Silveira Fraga »

Duarte, bom dia.

Cara, é possível sim selecionar a opção via o Texto/Label desejado.

Para fazer isso, substitua o comando swsElement.selectByValue, pelo comando swsElement.selectByText, e informe o texto desejado.

Teste e nos retorne com o resultado.

Excelente final de semana e Feliz Páscoa.


aecduarte
Acabou de chegar
Acabou de chegar
Mensagens: 5
Registrado em: Sáb Fev 20, 2016 10:48 am

Re: [RESOLVIDO] - combobox dependente

Mensagem por aecduarte »

Perfeito! funcionou

Agora, travei na extração dos dados pelo selenium.

Tentei abrir a planilha "Selenium VBA - Busca CEP" mas retornou o seguinte erro " Não foi possível carregar um objeto porque ele não está disponivel nesta maquina"

Existe algum comando para retornar o conteúdo inteiro da página(nesse caso da popup que será aberta) e jogar direto no excel?

grato


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: [RESOLVIDO] - combobox dependente

Mensagem por Mikel Silveira Fraga »

Duarte, boa tarde.

Dê uma olhada no tópico abaixo:
Office 32bits no Windows 64bits

Dúvidas, a disposição.

Abraços.


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