none
resolver problema com ie.document.getelementbyid(ID = oque).Value = item RRS feed

  • 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&regionId=1&section=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!
    terça-feira, 26 de janeiro de 2010 13:23

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 InternetExplorer

    Sub 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&regionId=1&section=Home"
        Set oBrowser = New InternetExplorer
        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
    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
    terça-feira, 2 de fevereiro de 2010 14:16
  • 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
    quarta-feira, 3 de fevereiro de 2010 17:27

Todas as Respostas

  • O item não pode ser object
    tem que ser string, pois o InputBox recebe uma string, não um objeto

    OK

    Wesley
    terça-feira, 26 de janeiro de 2010 16:35
  • Prezao Wesley.

    Modifiquei a variável conforme sua orientação.

    Entratanto continua ocorrendo o mesmo erro 91.

    Tens como me dar um auxilio para resolver essa questão?
    terça-feira, 26 de janeiro de 2010 20:40
  • Esse é o objeto que vai ser alimentado

    ID = oque
    ????



    Wesley
    quarta-feira, 27 de janeiro de 2010 15:42
  • 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&regionId=1&section=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
    quarta-feira, 27 de janeiro de 2010 16:04
  • 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&regionId=1&section=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!
    quarta-feira, 27 de janeiro de 2010 19:11
  • 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 InternetExplorer

    Sub 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&regionId=1&section=Home"
        Set oBrowser = New InternetExplorer
        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
    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
    terça-feira, 2 de fevereiro de 2010 14:16
  • 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&regionId=1&section=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
    terça-feira, 2 de fevereiro de 2010 16:43
  • 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
    quarta-feira, 3 de fevereiro de 2010 17:27