Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Interação VBA com Internet Explorer (dúvidas)

Perguntas e Repostas sobre os artigos, posts e arquivos que são postados no site
Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Interação VBA com Internet Explorer (dúvidas)

Mensagem por webmaster »

dantunes,

Contra código "mal feito", não há o que fazer. Mas se chegou a obter o UL, o innerText tem dentro dele o input. Daí para frente, é na base do Find/Replace. Se precisar de ajuda com isso, continuamos.

Abraços


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.


dantunes
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Seg Jun 13, 2011 9:56 am

Re: Interação VBA com Internet Explorer (dúvidas)

Mensagem por dantunes »

Olá Tomás,

É uma enorme satisfação falar com você depois de tantos tutoriais e dicas que li através do seu blog.

Refleti sobre sua resposta, mas infelizmente não consegui chegar na lógica. Consigo pensar em Find/Replace para qualquer coisa referente a tabelas, pastas, e outros no próprio Excel. Mas como interações com o IE é novidade para mim, preciso de ajuda.

Seguinte:

1- Tentei retornar o valor da tag usando: Variável = ie.document.all("codigo").innertext (Resultado: Negativo)

2- Será que da para fazer um Loop para driblar a tag e chegar na box?

Muito obrigado !


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Interação VBA com Internet Explorer (dúvidas)

Mensagem por webmaster »

dantunes,

Foi o que imaginei. Normalmente ids repetidos causam conflito, impedindo de obter os elementos pelo id, como acontece no seu caso.

De qualquer forma, se na navegação já é possível obter o innerHTML de toda a página, vamos trabalhar a partir dele. Daí para frente, é na base do Find/Replace como tinha comentado e para isso, vai precisar de alguma noção de programação VBA e funções de String. Para isso, recomendo a leitura de um ótimo tutorial:

http://www.macoratti.net/strings.htm

Após a leitura, a resposta ficará mais clara.

Abraços


dantunes
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Seg Jun 13, 2011 9:56 am

Re: Interação VBA com Internet Explorer (dúvidas)

Mensagem por dantunes »

Bom dia Tomás,

O material que você indicou realmente é muito bom, ja havia lido a muito tempo, e valeu reler para recordar algumas coisas. Infelizmente não encontrei a solução para o problema. Pois ainda nao entendi como você faria o replace no innerHTML.

Atenciosamente,


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.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Interação VBA com Internet Explorer (dúvidas)

Mensagem por webmaster »

dantunes,

Mais uma dica. Você não pode mudar o innerHTML, portanto, crie uma nova variável para o que precida.

Use a função Find para encontrar o texto que procura, no caso, a tag. Use o Right ou Left para pegar a porção de texto necessária para obter o valor do controle.

Abraços


dantunes
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Seg Jun 13, 2011 9:56 am

Re: Interação VBA com Internet Explorer (dúvidas)

Mensagem por dantunes »

Olá Tomás,

Rs...Cara, não sei mesmo como fazer esta parada usado a sua dica, mas voltei para dizer que consegui resolver o problema (depois de fritar a cabeça), desviando da tag miserável que estava impedindo o preenchimento lembra? Segue a logica abaixo.

Option Explicit
Dim ie As InternetExplorer
Dim ietxt As String
Dim i As Long
Dim objElement As Object
Dim objCollection As Object

Sub NOTAM()

Set ie = New InternetExplorer
ie.Navigate "http://www.aisweb.aer.mil.br/?i=notam"

Do Until ie.ReadyState = READYSTATE_COMPLETE
Loop

ie.Visible = True

Set objCollection = ie.Document.getElementsByTagName("input")

If objCollection(0).NAME = "codigo" Then

objCollection(0).Value = "SBGL"

End If


ie.Document.all("enviar").Click


End Sub

Poderia me explicar como eu faria do seu jeito?

Muito obrigado pelo suporte Tomás!


Até a proxima.


mirculio
Colaborador
Colaborador
Mensagens: 33
Registrado em: Qua Jun 29, 2011 11:24 am

Re: Interação VBA com Internet Explorer (dúvidas)

Mensagem por mirculio »

Bom dia senhores,

o trecho abaixo entra em loop infinito no meu codigo. Precisei procurar algo com delay pré-definido, o que não é a melhor escolha. Alguma outra opção!

Do Until ie.ReadyState = READYSTATE_COMPLETE
Loop

Outra dúvida, na abertura da página, preciso garantir que ele entre no ambiente de login, pois, no caso de já ter logado anteriormente a página entra direto. Como faço para distringuir qual página está sendo aberta?
Tentei pegar o nome da ABA, mas não consegui por não se tratar de um objeto da página. Acho que seria mais fácil pelo endereço do browser.


mirculio
Colaborador
Colaborador
Mensagens: 33
Registrado em: Qua Jun 29, 2011 11:24 am

Re: Interação VBA com Internet Explorer (dúvidas)

Mensagem por mirculio »

Senhores, acima ainda não foi resolvido, e já tenho mais 1.

Depois fazer login na web precisaria navegar por algumas paginas através de links e preencher alguns campos combo e text. Porém, o site está separado em frames. Como faço para referenciar em qual frame quero aplicar o evento de click no link?

Pesquisei e acabei encontrando alguns materiais a respeito. Porém não consegui identificar no código da página.

Alguem poderia me ajudar?


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Interação VBA com Internet Explorer (dúvidas)

Mensagem por webmaster »

mirculio,

Quanto ao READYSTATE_COMPLETE, de fato, alguns sites demorar para terminar de responder, o que não significa que já não dê para ler seu conteúdo. Tente o seguinte e veja se funciona:

Código: Selecionar todos

While objIE.Busy
' faz algo
Wend
Outra alternativa é implementar um atraso no código:

http://www.tomasvasquez.com.br/blog/mic ... era-no-vba

Resolvendo isso, continuamos.

Abraços


trp
Acabou de chegar
Acabou de chegar
Mensagens: 3
Registrado em: Ter Jul 19, 2011 2:10 pm

Re: Interação VBA com Internet Explorer (dúvidas)

Mensagem por trp »

Tomás

Boa tarde

Achei muito interessante este assunto porém não consegui por exemplo depois que eu acesso o site com login e senha trabalhar com a outra tela.

segue meu código e site que encontrei que exemplifica minha necessidade

Sub Dados()

Dim ie As Object
Set ie = CreateObject("internetexplorer.application")
ie.Visible = True
ie.Navigate "http://nfecte.nddigital.com.br/coldweb/default.aspx"
Do While ie.busy
Loop
ie.document.getElementById("tbLogon").Value = "ndd"
ie.document.getElementById("tbPassword").Value = "ndd"
ie.document.getElementById("btnOk").Click


End Sub

****Esta é a tela inicial porem como faço por exemplo para mudar a opção do box, inserir os dados como cnpj, numero da nota, data e etc e clicar no botão consultar

Desde já agradeço a atenção.

trn


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