Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
[RESOLVIDO] - combobox dependente
[RESOLVIDO] - combobox dependente
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.,
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.,
Editado pela última vez por aecduarte em Sex Mar 25, 2016 5:50 pm, em um total de 3 vezes.
Re: Web - combobox dependente
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
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
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Web - combobox dependente
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.
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.
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Web - combobox dependente
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:
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.
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
- 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
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
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
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: [RESOLVIDO] - combobox dependente
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.
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
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
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
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: [RESOLVIDO] - combobox dependente
Duarte, boa tarde.
Dê uma olhada no tópico abaixo:
Office 32bits no Windows 64bits
Dúvidas, a disposição.
Abraços.
Dê uma olhada no tópico abaixo:
Office 32bits no Windows 64bits
Dúvidas, a disposição.
Abraços.