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

VBA não consegue inserir dados no IE

A Web está aí, não há como negar. Ela é onipresente em praticamente toda operação eletrônica realizada nos dias de hoje. Como não podia ser diferente, o Excel, ferramenta máxima para analistas e profissionais das mais diversas áreas do mercado precisa estar alinhado com esta necesssidade. E ele está! Neste forum, o debate é focado em expor dúvidas, sugestões, modelos de código e exemplos de uso do Excel na Integração com tecnologias Web.
ajccesar_filho
Colaborador
Colaborador
Mensagens: 10
Registrado em: Sex Nov 25, 2016 5:14 pm

VBA não consegue inserir dados no IE

Mensagem por ajccesar_filho »

Boa Tarde Amigos,

Estou fazendo um trabalho para extrair dados na web, e baixei alguns códigos para entender como funciona o processo.
Porem quando o código vai inserir a informação no campo de busca gera do site aparece um erro de permissão negada cod. 70. o curioso e que antes de instalar o win 10 e ofice 16 o código funcionava corretamente agora não consigo mais fazer funcionar. Alguém poderia me ajudar.

Abaixo o código que estou testando.

Sub lReferenciaIE() 'Inclui referência ao Microsoft Internet Controls
Dim ObRef
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}", 1, 1
End Sub

Sub lsPesquisar()
'Inclui a referência se não houver, deve ativar o microsoft internet controle e a biblioteca 2.0
lReferenciaIE

Dim IE As InternetExplorer
Dim lCodigo As String
Dim lUltimaLinhaAtiva As Long
Dim lContador As Long

lUltimaLinhaAtiva = Worksheets("Planilha1").Cells(Worksheets("Planilha1").Rows.Count, 1).End(xlUp).Row 'Identifica a última célula ativa da lista
Set IE = CreateObject("internetexplorer.application")
Set IE = New InternetExplorer 'Cria um objeto Internet Explorer

IE.Visible = True 'Torna o objeto visível, vocês podem deixar como false e fará tudo em background

For lContador = 2 To lUltimaLinhaAtiva 'Faz um loop por todas as linhas da planilha

IE.Navigate "https://br.financas.yahoo.com/lookup" 'Navega ao site

While IE.ReadyState <> READYSTATE_COMPLETE 'Identifica se a página já foi totalmente carregada

Wend

'Como a página possui JavaScript que cria os objetos que são preenchidos após a carga completa, é necessário
'aguardar um tempo, coloquei 3 segundos, alterar conforme a necessidade.
'Caso não tenha javascript na criação dos objetos da página comentar esta parte do código, pois será bem
'mais rápida a execução.

sng = Timer

Do While sng + 3 > Timer

Loop

lCodigo = Range("A" & lContador).Value 'Carrega os dados da AÇÃO que serão preenchidos na página

IE.Document.all("txtQuotes").Value = lCodigo 'DOCUMENT.ALL() Identifica o ID do objeto, nesse caso é o ID do input no navegador onde eu vou submeter os valores no campo.

IE.Document.all("btnQuotes").Click 'Aqui será o botão que será submetido para enviar os dados de busca no navegador, mesmo coisa no comentário de cima

While IE.ReadyState <> READYSTATE_COMPLETE 'Identifica se a página já foi totalmente carregada

Wend

'Como a página possui JavaScript que cria os objetos que são preenchidos após a carga completa, é necessário
'aguardar um tempo, coloquei 3 segundos, alterar conforme a necessidade.
'Caso não tenha javascript na criação dos objetos da página comentar esta parte do código, pois será bem
'mais rápida a execução.

sng = Timer

Do While sng + 3 > Timer

Loop

'Faz um loop pelos objetos do tipo table na página e procura pelo campo preenchido.
'Em seguida busca pela segunda coluna da linha e armazena esta informação diretamente na coluna B à E da linha da planilha

For Each i In IE.Document.body.getElementsByTagName("div")

If InStr(i.innerText, "Fechamento ant.:") > 0 Then

For Each l In i.getElementsByTagName("div")

On Error Resume Next 'Aqui Prevenimos qualquer tipo de erro de objeto inconveniente

If InStr(l.innerText, lCodigo) Then

Range("B" & lContador).Value = l.getElementsByTagName("td")(0).innerText

Range("C" & lContador).Value = l.getElementsByTagName("td")(1).innerText

Range("D" & lContador).Value = l.getElementsByTagName("td")(2).innerText

Range("E" & lContador).Value = l.getElementsByTagName("td")(3).innerText

End If

Next l

End If

Next i

Next lContador

MsgBox "Concluído!"

IE.Quit

Set IE = Nothing

End Sub


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: VBA não consegue inserir dados no IE

Mensagem por webmaster »

ajccesar_filho,

Voce por aqui? O problema ainda persiste ou mudou em definitivo para o Selenium?

Att


Responder