Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Interação VBA com Internet Explorer (dúvidas)
Re: Interação VBA com Internet Explorer (dúvidas)
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
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
Re: Interação VBA com Internet Explorer (dúvidas)
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 !
É 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 !
Re: Interação VBA com Internet Explorer (dúvidas)
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
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
Re: Interação VBA com Internet Explorer (dúvidas)
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,
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,
Re: Interação VBA com Internet Explorer (dúvidas)
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
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
Re: Interação VBA com Internet Explorer (dúvidas)
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.
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.
Re: Interação VBA com Internet Explorer (dúvidas)
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.
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.
Re: Interação VBA com Internet Explorer (dúvidas)
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?
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?
Re: Interação VBA com Internet Explorer (dúvidas)
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:
Outra alternativa é implementar um atraso no código:
http://www.tomasvasquez.com.br/blog/mic ... era-no-vba
Resolvendo isso, continuamos.
Abraços
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
http://www.tomasvasquez.com.br/blog/mic ... era-no-vba
Resolvendo isso, continuamos.
Abraços
Re: Interação VBA com Internet Explorer (dúvidas)
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
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