Página 1 de 2

Interação IE com VBA

Enviado: Qui Nov 07, 2019 11:53 am
por Helen Pitanga
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.

Re: Interação IE com VBA

Enviado: Qui Nov 07, 2019 2:54 pm
por Julio Mangilli
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

Re: Interação IE com VBA

Enviado: Qui Nov 07, 2019 5:44 pm
por Helen Pitanga
Oi Julio.

Boa tarde.

Obrigada pelo seu breve retorno.

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

Re: Interação IE com VBA

Enviado: Qui Nov 07, 2019 9:25 pm
por gioboscolo
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.

Re: Interação IE com VBA

Enviado: Sex Nov 08, 2019 7:53 am
por Julio Mangilli
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.

Re: Interação IE com VBA

Enviado: Seg Nov 11, 2019 1:47 pm
por Helen Pitanga
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! ;)

Re: Interação IE com VBA

Enviado: Seg Nov 11, 2019 2:01 pm
por Julio Mangilli
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.

Re: Interação IE com VBA

Enviado: Qua Nov 13, 2019 11:51 pm
por Helen Pitanga
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!

Re: Interação IE com VBA

Enviado: Qui Nov 14, 2019 7:56 am
por Julio Mangilli
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.

Re: Interação IE com VBA

Enviado: Sáb Nov 16, 2019 4:57 pm
por Helen Pitanga
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?