Usuário com melhor resposta
resolver problema com ie.document.getelementbyid(ID = oque).Value = item

Pergunta
-
estou montando uma macro para realizar consultas na web e buscar clientes para oferecer serviços.
abaixo segue código que estou tentando usar e que em determinado momento acusa o seguinte erro:" Erro em tempo de execeução '91':
A variável do objeto ou a variável do bloco 'with' não foi definida"
Abaixo o código que estou tentando usar:
Function dados_site()
Dim ie As Object
Dim cliente As String
Dim cidade As String
Dim linha As Integer
Dim telefone As String
dim ddd as string
Dim item As Object
linha = 2
'instancia um objeto do Internet Explorer e o torna visivel
Set ie = CreateObject("internetexplorer.application")
ie.Visible = True
'vai para a página
ie.navigate "http://www.hagah.com.br/jsp/default.jsp?uf=1&local=1®ionId=1§ion=Home"
Do While ie.busy
Loop
'acredito que o erro esta nessa parte
item = InputBox("Digite o segmento de marcado a ser procurado.", "Gerar Lead(Levantador de Negócios)")
ie.document.getelementbyid(ID = oque).Value = item
x = linha + 1
End Function
O Inputbox tem que lançar o valor dentro de um campo de busca no site, e a partir dai começar a coleta dos dados mencionados. Ir avançando nas páginas até acabar de coletar todos os dados da pesquisa realizada.
Meu objetivo é coletar dados básicos como nome de cliente, telefone, cidade e endereço e oferecer serviços de minha empresa para os mesmos.
Espero contar com a ajuda de vocês!
Respostas
-
Olá...Fiz aqui e deu certo.....no vba clique em ferramentas/referencias....e marque Microsoft HTML Object Library e Microsoft Internet Controls....se não tiver o internet control clique em procurar e ache o arquivo em C:\Windows\system32\ieframe.dll
Todos os clientes são gravados na planilha 1....porém só da 1º página....agora é só executar esse código para as demais páginas...
Dim HTMLDoc As HTMLDocument
Dim oBrowser As InternetExplorerSub dados_site()
Dim oHTML_Element As IHTMLElement
Dim sURL As String
On Error GoTo Err_Clear
sURL = "http://www.hagah.com.br/jsp/default.jsp?uf=1&local=1®ionId=1§ion=Home"
Set oBrowser = New InternetExplorer
oBrowser.Silent = True
oBrowser.navigate sURL
oBrowser.Visible = TrueDo
Loop Until oBrowser.readyState = READYSTATE_COMPLETE
Set HTMLDoc = oBrowser.documentitem = InputBox("Digite o segmento de marcado a ser procurado.", "Gerar Lead(Levantador de Negócios)")
HTMLDoc.getElementById("oque").Value = item
HTMLDoc.getElementById("btnSend").Click
Do While oBrowser.busy
DoEvents
Loop
Dim linha As Long, texto As Variant
linha = 1
For Each oHTML_Element In HTMLDoc.all
If InStr(oHTML_Element.className, "estab") > 0 Then
If oHTML_Element.tagName = "LI" Then
If InStr(oHTML_Element.innerText, Chr(13) & Chr(10)) > 0 Then
texto = Split(oHTML_Element.innerText, Chr(13) & Chr(10))
Plan1.Range("A" & linha) = texto(0)
Plan1.Range("B" & linha) = texto(1)
Else
Plan1.Range("A" & linha) = oHTML_Element.innerText
End If
texto = ""
linha = linha + 1
End If
End If
Next
Err_Clear:
If Err <> 0 Then
Debug.Assert Err = 0
Err.Clear
Resume Next
End If
End Sub
Até...
Se solucionar marque como respondida...- Marcado como Resposta DouglasSantiago quarta-feira, 3 de fevereiro de 2010 17:25
-
FIcou perfeito!
Agora so vou relizar a parte para avançar as páginas e posto aqui!
EvangelistaLion e Wesley Cesar muito obrigado pela dica!
Abraços!
- Marcado como Resposta DouglasSantiago quarta-feira, 3 de fevereiro de 2010 17:27
Todas as Respostas
-
-
-
-
Escrever no campo escreveu
o campo é "oque"
Sub dados_site()
Dim ie As Object
Dim cliente As String
Dim cidade As String
Dim linha As Integer
Dim telefone As String
Dim ddd As String
Dim item As String
linha = 2
'instancia um objeto do Internet Explorer e o torna visivel
Set ie = CreateObject("internetexplorer.application")
ie.Visible = True
'vai para a página
ie.navigate "http://www.hagah.com.br/jsp/default.jsp?uf=1&local=1®ionId=1§ion=Home"
Do While ie.busy
Loop'acredito que o erro esta nessa parte
item = InputBox("Digite o segmento de marcado a ser procurado.", "Gerar Lead(Levantador de Negócios)")
ie.document.getelementbyId("oque").Value = item
ie.document.getelementbyId("btnSend").Click
x = linha + 1
End Sub
Wesley- Editado Wesley Cesar quarta-feira, 27 de janeiro de 2010 17:25 esqueci um código
-
Wesley, tentei implementar o código so que agora apareceu o erro "ERRO EM TEMPO DE EXECUÇÃO'438': O OBJETONÃO ACEITA ESTA PROPRIEDADE OU METODO.
Abaixo segue o que foi implementado no código.
Sub dados_site()
Dim ie As Object
Dim cliente As String
Dim cidade As String
Dim linha As Integer
Dim telefone As String
Dim ddd As String
Dim item As String
Dim endereco As String
linha = 2
'instancia um objeto do Internet Explorer e o torna visivel
Set ie = CreateObject("internetexplorer.application")
ie.Visible = True
'vai para a página
ie.navigate "http://www.hagah.com.br/jsp/default.jsp?uf=1&local=1®ionId=1§ion=Home"
Do While ie.busy
DoEvents
Loop
'acredito que o erro esta nessa parte
item = InputBox("Digite o segmento de marcado a ser procurado.", "Gerar Lead(Levantador de Negócios)")
ie.document.getelementbyid("oque").Value = item
ie.document.getelementbyid("btnSend").Click
Do While ie.busy
DoEvents
Loop
'aqui que eu mexi e novamente me perdi!!!!
''''''''''''''''''''''''''''''''''''''''''''
cliente = ie.document.getelemetbyid("letter")
telefone = ie.document.getelementbyid("telefone tam-a")
endereco = ie.document.getelementbyid("endereco")
Sheets(1).Cells(linha, "a") = cliente
Sheets(1).Cells(linha, "b") = telefone
Sheets(1).Cells(linha, "c") = endereco
Do While ie.busy
DoEvents
Loop
GoTo Prox
Prox:
linha = linha + 1
DoEvents
Wend
End Sub
GRato pelo auxilio!
Abs! -
Olá...Fiz aqui e deu certo.....no vba clique em ferramentas/referencias....e marque Microsoft HTML Object Library e Microsoft Internet Controls....se não tiver o internet control clique em procurar e ache o arquivo em C:\Windows\system32\ieframe.dll
Todos os clientes são gravados na planilha 1....porém só da 1º página....agora é só executar esse código para as demais páginas...
Dim HTMLDoc As HTMLDocument
Dim oBrowser As InternetExplorerSub dados_site()
Dim oHTML_Element As IHTMLElement
Dim sURL As String
On Error GoTo Err_Clear
sURL = "http://www.hagah.com.br/jsp/default.jsp?uf=1&local=1®ionId=1§ion=Home"
Set oBrowser = New InternetExplorer
oBrowser.Silent = True
oBrowser.navigate sURL
oBrowser.Visible = TrueDo
Loop Until oBrowser.readyState = READYSTATE_COMPLETE
Set HTMLDoc = oBrowser.documentitem = InputBox("Digite o segmento de marcado a ser procurado.", "Gerar Lead(Levantador de Negócios)")
HTMLDoc.getElementById("oque").Value = item
HTMLDoc.getElementById("btnSend").Click
Do While oBrowser.busy
DoEvents
Loop
Dim linha As Long, texto As Variant
linha = 1
For Each oHTML_Element In HTMLDoc.all
If InStr(oHTML_Element.className, "estab") > 0 Then
If oHTML_Element.tagName = "LI" Then
If InStr(oHTML_Element.innerText, Chr(13) & Chr(10)) > 0 Then
texto = Split(oHTML_Element.innerText, Chr(13) & Chr(10))
Plan1.Range("A" & linha) = texto(0)
Plan1.Range("B" & linha) = texto(1)
Else
Plan1.Range("A" & linha) = oHTML_Element.innerText
End If
texto = ""
linha = linha + 1
End If
End If
Next
Err_Clear:
If Err <> 0 Then
Debug.Assert Err = 0
Err.Clear
Resume Next
End If
End Sub
Até...
Se solucionar marque como respondida...- Marcado como Resposta DouglasSantiago quarta-feira, 3 de fevereiro de 2010 17:25
-
Dá pra fazer sem referência também
Sub dados_site()
Dim HTMLDoc As Object
Dim oBrowser As Object
Dim oHTML_Element As Object
Dim sURL As String
Set oBrowser = CreateObject("internetexplorer.application")
sURL = "http://www.hagah.com.br/jsp/default.jsp?uf=1&local=1®ionId=1§ion=Home"
oBrowser.Silent = True
oBrowser.navigate sURL
oBrowser.Visible = True
Do
Loop Until oBrowser.readyState = READYSTATE_COMPLETE
Set HTMLDoc = oBrowser.document
item = InputBox("Digite o segmento de marcado a ser procurado.", "Gerar Lead(Levantador de Negócios)")
HTMLDoc.getElementById("oque").Value = item
HTMLDoc.getElementById("btnSend").Click
Do While oBrowser.busy
DoEvents
Loop
Dim linha As Long, texto As Variant
linha = 1
For Each oHTML_Element In HTMLDoc.all
If InStr(oHTML_Element.className, "estab") > 0 Then
If oHTML_Element.tagName = "LI" Then
If InStr(oHTML_Element.innerText, Chr(13) & Chr(10)) > 0 Then
texto = Split(oHTML_Element.innerText, Chr(13) & Chr(10))
Plan1.Range("A" & linha) = texto(0)
Plan1.Range("B" & linha) = texto(1)
Else
Plan1.Range("A" & linha) = oHTML_Element.innerText
End If
texto = ""
linha = linha + 1
End If
End If
Next
End Sub -
FIcou perfeito!
Agora so vou relizar a parte para avançar as páginas e posto aqui!
EvangelistaLion e Wesley Cesar muito obrigado pela dica!
Abraços!
- Marcado como Resposta DouglasSantiago quarta-feira, 3 de fevereiro de 2010 17:27