Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Interação IE com VBA
-
- Acabou de chegar
- Mensagens: 7
- Registrado em: Qua Nov 06, 2019 5:26 pm
Interação IE com VBA
Oi pessoal!
Fiz um curso de VBA e agora estou colocando em prática onde trabalho. A questão é que empaquei aqui e não consigo sair.
Quero extrair relatórios de um determinado site que empresa usa para controle de estoque e saldo de colaboradores, mas não estou conseguindo fazer funcionar. É necessário fazer uma série de cliques (1º em Estoques; 2º Estoque por Técnico; 3º Exportar). Segue abaixo o código que localizei realizando a inspeção dos dois primeiros passos:
1º Estoques - <li class="active menu" id="menuid_b_5">
<a href="javascript:getMenu('Estoques','37319',menuid_b_5);">Estoques</a>
</li>
2º Estoque por Técnico - <ul class="vertical group level1" style="top: 0px; display: block;"></ul>
<input name="rdmTabela" id="rdmTabela_Hidden" type="hidden">
<script type="text/javascript"> window["rdmTabela"]=RadMenu.Create("rdmTabela");window["rdmTabela"].Initialize({"IsContext":true,"ContextMenuElementID":"wrapper","Skin":"Outlook","Flow":0,"Enabled":true,"OnClientItemClicked":"OnClick"},{});
</script>
Gente, desculpa se pareço muito ignorante no assunto, mas como eu disse, estou iniciando.
Obrigada.
Fiz um curso de VBA e agora estou colocando em prática onde trabalho. A questão é que empaquei aqui e não consigo sair.
Quero extrair relatórios de um determinado site que empresa usa para controle de estoque e saldo de colaboradores, mas não estou conseguindo fazer funcionar. É necessário fazer uma série de cliques (1º em Estoques; 2º Estoque por Técnico; 3º Exportar). Segue abaixo o código que localizei realizando a inspeção dos dois primeiros passos:
1º Estoques - <li class="active menu" id="menuid_b_5">
<a href="javascript:getMenu('Estoques','37319',menuid_b_5);">Estoques</a>
</li>
2º Estoque por Técnico - <ul class="vertical group level1" style="top: 0px; display: block;"></ul>
<input name="rdmTabela" id="rdmTabela_Hidden" type="hidden">
<script type="text/javascript"> window["rdmTabela"]=RadMenu.Create("rdmTabela");window["rdmTabela"].Initialize({"IsContext":true,"ContextMenuElementID":"wrapper","Skin":"Outlook","Flow":0,"Enabled":true,"OnClientItemClicked":"OnClick"},{});
</script>
Gente, desculpa se pareço muito ignorante no assunto, mas como eu disse, estou iniciando.
Obrigada.
-
- Manda bem
- Mensagens: 127
- Registrado em: Sex Out 05, 2018 2:42 pm
Re: Interação IE com VBA
Olá tudo bom?
Um inicio para você tentar.....
Sub buscar()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.application")
With IE
.Visible = True
.NAVIGATE ("Seu site")
'exemplo de link para por ali dentro:https://servicos.gollog.com.br/Home/Inicio#cotacao
While .Busy Or .ReadyState <> 4:
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend
IE.Document.getElementById("menuid_b_5").Click
IE.Document.getElementById("rdmTabela_Hidden").Click
Caso queira colocar em algum campo valores pode utilizar
IE.Document.getElementById("").Value = ("22/09/2019")
Abraços
Um inicio para você tentar.....
Sub buscar()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.application")
With IE
.Visible = True
.NAVIGATE ("Seu site")
'exemplo de link para por ali dentro:https://servicos.gollog.com.br/Home/Inicio#cotacao
While .Busy Or .ReadyState <> 4:
Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
DoEvents:
Wend
IE.Document.getElementById("menuid_b_5").Click
IE.Document.getElementById("rdmTabela_Hidden").Click
Caso queira colocar em algum campo valores pode utilizar
IE.Document.getElementById("").Value = ("22/09/2019")
Abraços
-
- Acabou de chegar
- Mensagens: 7
- Registrado em: Qua Nov 06, 2019 5:26 pm
Re: Interação IE com VBA
Oi Julio.
Boa tarde.
Obrigada pelo seu breve retorno.
Quando vou depurar, ele passa pelo código, mas não acontece nada.
Boa tarde.
Obrigada pelo seu breve retorno.
Quando vou depurar, ele passa pelo código, mas não acontece nada.
-
- Acabou de chegar
- Mensagens: 9
- Registrado em: Qui Out 24, 2019 3:18 pm
Re: Interação IE com VBA
Boa noite, amigo.
Há alguns dias tive um problema parecido.
Segue o tópico: (https://www.tomasvasquez.com.br/forum/v ... php?t=7325)
Posso te adiantar que pesquisei muito para sair desse erro. Mas a solução encontrada foi a que me referi no tópico.
Pelo que pesquisei há alguns métodos de se fazer interações com objetos javascript.
Pegando pelo ID, que a pessoa acima sugeriu e na maioria das vezes da certo.
Se não der vai tentando coisas diferentes.
utilize o comando do amigo e substitua o "IE.Document.getElementById("menuid_b_5").Click" pelo seguinte:
Tentando pela classe "IE.Document.getElementsByClassName("active menu").Click" obs: se tiver outros menus com a mesma classe pode ser que ele clique em outro. Caso o faça a solução está aí. Deve-se posteriormente adicionar o item que você deseja clicar. IE.Document.getElementsByClassName("active menu").item(nº).Click
A mesma coisa pela tag: IE.Document.getElementsByTagName("li").item(nº).Click ~> nesse método é mais difícil de localizar o item devido a quantidade comumente altas de tags iguais na mesma página.
voce pode tentar também .document.all.item("menuid_b_5").Click (e ir tentando com os outros elementos)
Caso não consiga há também o método execscript q executa a tarefa javascript (não sei utilizá-lo mas na web tem bastante coisa)
Se a sua empresa permitir e não necessitar homologação talvez seja válido utilizar o Selenium para tla visto que pelo que pesquisei este é melhor para essas tarefas.
Apesar de eu ter tido sucesso na automação da interação de tres sites, em um deles eu não estou conseguindo. Então caso vc ache a solução favor compartilhar conosco!
Boa sorte!
Finalmente, como eu sofri muito para criar minha automação estou a disposição para te ajudar.
Há alguns dias tive um problema parecido.
Segue o tópico: (https://www.tomasvasquez.com.br/forum/v ... php?t=7325)
Posso te adiantar que pesquisei muito para sair desse erro. Mas a solução encontrada foi a que me referi no tópico.
Pelo que pesquisei há alguns métodos de se fazer interações com objetos javascript.
Pegando pelo ID, que a pessoa acima sugeriu e na maioria das vezes da certo.
Se não der vai tentando coisas diferentes.
utilize o comando do amigo e substitua o "IE.Document.getElementById("menuid_b_5").Click" pelo seguinte:
Tentando pela classe "IE.Document.getElementsByClassName("active menu").Click" obs: se tiver outros menus com a mesma classe pode ser que ele clique em outro. Caso o faça a solução está aí. Deve-se posteriormente adicionar o item que você deseja clicar. IE.Document.getElementsByClassName("active menu").item(nº).Click
A mesma coisa pela tag: IE.Document.getElementsByTagName("li").item(nº).Click ~> nesse método é mais difícil de localizar o item devido a quantidade comumente altas de tags iguais na mesma página.
voce pode tentar também .document.all.item("menuid_b_5").Click (e ir tentando com os outros elementos)
Caso não consiga há também o método execscript q executa a tarefa javascript (não sei utilizá-lo mas na web tem bastante coisa)
Se a sua empresa permitir e não necessitar homologação talvez seja válido utilizar o Selenium para tla visto que pelo que pesquisei este é melhor para essas tarefas.
Apesar de eu ter tido sucesso na automação da interação de tres sites, em um deles eu não estou conseguindo. Então caso vc ache a solução favor compartilhar conosco!
Boa sorte!
Finalmente, como eu sofri muito para criar minha automação estou a disposição para te ajudar.
-
- Manda bem
- Mensagens: 127
- Registrado em: Sex Out 05, 2018 2:42 pm
Re: Interação IE com VBA
O gioboscolo tem razão....
A gente vai muito por tentativa o método Selenium tem muita opção legal que acaba facilitando eu acredito
Se quiser eu posto aqui uma por selenium para voce testar mas se você estiver pelo mesma situação do gioboscolo então vamos tentar outra forma , o gioboscolo já tem experiencia em IE então juntos vamos tentar ajudar e estou a disposição também.
A gente vai muito por tentativa o método Selenium tem muita opção legal que acaba facilitando eu acredito
Se quiser eu posto aqui uma por selenium para voce testar mas se você estiver pelo mesma situação do gioboscolo então vamos tentar outra forma , o gioboscolo já tem experiencia em IE então juntos vamos tentar ajudar e estou a disposição também.
-
- Acabou de chegar
- Mensagens: 7
- Registrado em: Qua Nov 06, 2019 5:26 pm
Re: Interação IE com VBA
Oi Júlio. Toda ajuda é bem vinda. Estive pesquisando sobre o Selenium WebDriver, mas aqui na empresa não é liberada a instalação. Precisa do "De acordo" até do gerente.
Obrigada a todos pelo emprenho em me ajudar. Estou me sentindo bem acolhida aqui!
Obrigada a todos pelo emprenho em me ajudar. Estou me sentindo bem acolhida aqui!
-
- Manda bem
- Mensagens: 127
- Registrado em: Sex Out 05, 2018 2:42 pm
Re: Interação IE com VBA
E como está indo seu projeto ?
Tem uma forma para aquele segundo botão
Dim objElementCol As Object
Dim objElement As Object
Set objElementCol = IE.Document.getElementsByTagName("input")
For Each objElement In objElementCol
If objElement.Value = "rdmTabela_Hidden" Then 'ou "rdmTabela"
objElement.Click
Exit For
End If
Next objElement
Na verdade como disse nosso amigo gioboscolo , temos que ir por tentantiva caso a programação não consiga achar o elemento.
Por isso as ID
IE.Document.getElementById("menuid_b_5").Click
IE.Document.getElementById("rdmTabela_Hidden").Click
Que coloquei são tentativas, muitas vezes vai da certo, mas tente verificar se realmente os nomes foram encontrados.
IE.Document.getElementById("menuid_b_5").value
IE.Document.getElementById("menuid_b_5").Click
Testa e nos informe.
Tem uma forma para aquele segundo botão
Dim objElementCol As Object
Dim objElement As Object
Set objElementCol = IE.Document.getElementsByTagName("input")
For Each objElement In objElementCol
If objElement.Value = "rdmTabela_Hidden" Then 'ou "rdmTabela"
objElement.Click
Exit For
End If
Next objElement
Na verdade como disse nosso amigo gioboscolo , temos que ir por tentantiva caso a programação não consiga achar o elemento.
Por isso as ID
IE.Document.getElementById("menuid_b_5").Click
IE.Document.getElementById("rdmTabela_Hidden").Click
Que coloquei são tentativas, muitas vezes vai da certo, mas tente verificar se realmente os nomes foram encontrados.
IE.Document.getElementById("menuid_b_5").value
IE.Document.getElementById("menuid_b_5").Click
Testa e nos informe.
-
- Acabou de chegar
- Mensagens: 7
- Registrado em: Qua Nov 06, 2019 5:26 pm
Re: Interação IE com VBA
Olá pessoal.
Tenho novidades. Consegui colocar o Selenium no PC em casa (sim, levei trabalho pra casa ) e consegui as informações. Só não estou sabendo como criar o código.
Command (click) - Target (linkText = Estoques)
Command (click) - Target (css=.accordionContent:nth-child(1))
Command (Select Frame) - Target (index=0)
Command (click) - Target (id = btnExportar)
Gente, se vocês tiverem o link de algum site que eu aprenda e entenda sobre quais códigos usar para fazer essa geringonça funcionar, me digam. Tentarei fazer esse código na marra. Rsrsrsrsrs
Abraços galera!
Tenho novidades. Consegui colocar o Selenium no PC em casa (sim, levei trabalho pra casa ) e consegui as informações. Só não estou sabendo como criar o código.
Command (click) - Target (linkText = Estoques)
Command (click) - Target (css=.accordionContent:nth-child(1))
Command (Select Frame) - Target (index=0)
Command (click) - Target (id = btnExportar)
Gente, se vocês tiverem o link de algum site que eu aprenda e entenda sobre quais códigos usar para fazer essa geringonça funcionar, me digam. Tentarei fazer esse código na marra. Rsrsrsrsrs
Abraços galera!
-
- Manda bem
- Mensagens: 127
- Registrado em: Sex Out 05, 2018 2:42 pm
Re: Interação IE com VBA
Olá,
Segue exemplo, qualquer coisa estamos a disposição..
Selenium tem varias ideias legais para buscar o elemento.
driver.FindElementById("").Click
driver.FindElementByClass("").Click
driver.FindElementByName("").Click
driver.FindElementByxpath("").Click
driver.FindElementByPartiallinktext("").Click
driver.FindElementBylinktext("").Click
Verifica o que consegue e nos avise.
Segue exemplo, qualquer coisa estamos a disposição..
Selenium tem varias ideias legais para buscar o elemento.
driver.FindElementById("").Click
driver.FindElementByClass("").Click
driver.FindElementByName("").Click
driver.FindElementByxpath("").Click
driver.FindElementByPartiallinktext("").Click
driver.FindElementBylinktext("").Click
Verifica o que consegue e nos avise.
- Anexos
-
- CAIXA FGTS EM ATRASO.rar
- (257.97 KiB) Baixado 269 vezes
-
- Acabou de chegar
- Mensagens: 7
- Registrado em: Qua Nov 06, 2019 5:26 pm
Re: Interação IE com VBA
Oi pessoal. Ainda estou tentando fazer funcionar. Só me tirem uma dúvida. Se eu conseguir a programação com o Selenium, a macro só roda em máquinas que tenham Selenium instalado em seus navegadores?