Página 1 de 1
[RESOLVIDO] - combobox dependente
Enviado: Dom Fev 21, 2016 8:47 pm
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.,
Re: Web - combobox dependente
Enviado: Qui Mar 03, 2016 2:34 pm
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
Re: Web - combobox dependente
Enviado: Sex Mar 04, 2016 4:02 pm
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.
Re: Web - combobox dependente
Enviado: Sex Mar 11, 2016 1:52 pm
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.
Re: Web - combobox dependente
Enviado: Sex Mar 25, 2016 3:44 pm
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
Re: [RESOLVIDO] - combobox dependente
Enviado: Sáb Mar 26, 2016 10:28 am
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.
Re: [RESOLVIDO] - combobox dependente
Enviado: Sáb Mar 26, 2016 12:27 pm
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
Re: [RESOLVIDO] - combobox dependente
Enviado: Sáb Mar 26, 2016 12:37 pm
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.