Esqueceu sua senha? Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

Interação IE com VBA

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Helen Pitanga
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Qua Nov 06, 2019 5:26 pm

Interação IE com VBA

Mensagem por Helen Pitanga » Qui Nov 07, 2019 11:53 am

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.



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.


Julio Mangilli
Manda bem
Manda bem
Mensagens: 108
Registrado em: Sex Out 05, 2018 2:42 pm

Re: Interação IE com VBA

Mensagem por Julio Mangilli » Qui Nov 07, 2019 2:54 pm

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



Helen Pitanga
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Qua Nov 06, 2019 5:26 pm

Re: Interação IE com VBA

Mensagem por Helen Pitanga » Qui Nov 07, 2019 5:44 pm

Oi Julio.

Boa tarde.

Obrigada pelo seu breve retorno.

Quando vou depurar, ele passa pelo código, mas não acontece nada. :(



gioboscolo
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Qui Out 24, 2019 3:18 pm

Re: Interação IE com VBA

Mensagem por gioboscolo » Qui Nov 07, 2019 9:25 pm

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.



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.


Julio Mangilli
Manda bem
Manda bem
Mensagens: 108
Registrado em: Sex Out 05, 2018 2:42 pm

Re: Interação IE com VBA

Mensagem por Julio Mangilli » Sex Nov 08, 2019 7:53 am

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.



Helen Pitanga
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Qua Nov 06, 2019 5:26 pm

Re: Interação IE com VBA

Mensagem por Helen Pitanga » Seg Nov 11, 2019 1:47 pm

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! ;)



Julio Mangilli
Manda bem
Manda bem
Mensagens: 108
Registrado em: Sex Out 05, 2018 2:42 pm

Re: Interação IE com VBA

Mensagem por Julio Mangilli » Seg Nov 11, 2019 2:01 pm

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.



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