none
VBA para consultar Site RRS feed

  • Pergunta

  • Olá,

    Estou criando um sistema para consultar um site.

     

    O objetivo é fazer a consulta e copiar os resultados para o excel.

     

    Vamos por parte; 1º estou apanhando para fazer a consulta com o código abaixo:

    Public Sub ConectaWeb()
    On Error Resume Next
    Dim endereço As String
    Dim mostra As Boolean
    
    Dim i, n, x As Integer
    endereço = "http://www2.bmf.com.br/pages/portal/bmfbovespa/boletim1/Distribuicao1.asp"
    Set ie = CreateObject("InternetExplorer.Application")
    ie.navigate (endereço)
    While ie.readyState <> 4
    Wend
    ie.Visible = True
    ie.document.forms.Item(0).Item(2).Value = "Retroativo:"
    ie.document.forms.Item(0).Item(3).Value = Plan1.Range("A1")
    ie.document.forms.Item(0).submit
      
    While ie.readyState <> 4
    Wend
    End Sub

    O site abre, mas ele não pega a data "Plan1.Range("A1")" para inserir no site.

    Se puderem me ajudar, agradeço.

    segunda-feira, 16 de agosto de 2010 23:20

Respostas

  • Coloque uma data qualquer e mude a linha para

    ie.document.forms.Item(0).Item(1).Value = Format(Plan1.Range("A1"), "dd/mm/yyyy")

    • Marcado como Resposta Jhuuu quinta-feira, 26 de agosto de 2010 11:29
    terça-feira, 24 de agosto de 2010 22:23
    Moderador
  • Public Sub ConectaWeb()
    On Error Resume Next
    Dim endereço As String
    Dim mostra As Boolean
    
    Dim i, n, x As Integer
    endereço = "http://www2.bmf.com.br/pages/portal/bmfbovespa/boletim1/Distribuicao1.asp"
    Set ie = CreateObject("InternetExplorer.Application")
    ie.navigate (endereço)
    While ie.readyState <> 4
    Wend
    ie.Visible = True
    ie.document.forms.Item(0).Item(1).Value = Plan1.Range("A1")
    ie.document.forms.Item(0).submit
     
    While ie.readyState <> 4
    Wend
    End Sub

    • Marcado como Resposta Jhuuu quinta-feira, 26 de agosto de 2010 11:29
    sábado, 21 de agosto de 2010 20:57
    Moderador

Todas as Respostas

  • Olá, boa noite.

    Desculpe, pode ser que eu não tenho observado atentamente, acessei o link e percebi que só a 1 campo para entrada de dados e que está no formato dd/mm/aaaa.

    Pelo que vejo no seu código, você está tentando entrar com dois dados ("retroativo" e "Plan1.Range("A1")"), está correto isso? Caso esteja, certifique-se de que o formatação que está na célula A1, segue o mesmo formato que deve se inserido no campo.

    Uma segunda possibilidade seria você utilizar um loop para inserir caracter por caracter no campo.

    Ex:

    for i = 1 to len(plan1.range("A1"))

    ie.document.forms.Item(0).Item(3).Value = mid(Plan1.Range("A1"), i, 1)

    next
    Não testei rsrs, foi de cabeça mesmo.

    Se precisar, entre em contato.

    treshgun@hotmail.com

    Abraços.

    quarta-feira, 18 de agosto de 2010 02:38
  • Recomendo tirar o On Error Resume Next do código e colocar um tratamento de erros que traga o Err.Description.
    Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br
    sábado, 21 de agosto de 2010 14:57
    Moderador
  • Public Sub ConectaWeb()
    On Error Resume Next
    Dim endereço As String
    Dim mostra As Boolean
    
    Dim i, n, x As Integer
    endereço = "http://www2.bmf.com.br/pages/portal/bmfbovespa/boletim1/Distribuicao1.asp"
    Set ie = CreateObject("InternetExplorer.Application")
    ie.navigate (endereço)
    While ie.readyState <> 4
    Wend
    ie.Visible = True
    ie.document.forms.Item(0).Item(1).Value = Plan1.Range("A1")
    ie.document.forms.Item(0).submit
     
    While ie.readyState <> 4
    Wend
    End Sub

    • Marcado como Resposta Jhuuu quinta-feira, 26 de agosto de 2010 11:29
    sábado, 21 de agosto de 2010 20:57
    Moderador
  •  

    Public Sub ConectaWeb()
    
    On Error Resume Next
    
    Dim endereço As String
    
    Dim mostra As Boolean
    
    
    
    Dim i, n, x As Integer
    
    endereço = "http://www2.bmf.com.br/pages/portal/bmfbovespa/boletim1/Distribuicao1.asp"
    
    Set ie = CreateObject("InternetExplorer.Application")
    
    ie.navigate (endereço)
    
    While ie.readyState <> 4
    
    Wend
    
    ie.Visible = True
    
    ie.document.forms.Item(0).Item(1).Value = Plan1.Range("A1")
    
    ie.document.forms.Item(0).submit
    
     
    
    While ie.readyState <> 4
    
    Wend
    
    End Sub


    Felipe, esse código ele abre a página mas deve inserir algo diferente pois retorna um erro.

    Você chegou a testa-lo ?

    Abraços

    segunda-feira, 23 de agosto de 2010 10:22
  • Sim, testei. Ele funciona. Qual erro você obtém?
    segunda-feira, 23 de agosto de 2010 22:35
    Moderador
  • Sim, testei. Ele funciona. Qual erro você obtém?


    Ele me joga nesse link:

    http://www2.bmf.com.br/pages/portal/Erro.asp?Idioma=1&Cod=02%20Obtem%20dados&Origem=Distribuicao1.asp&Descr=Error%20converting%20data%20type%20varchar%20to%20datetime.

     

    Com um erro na página:

    "Não foi possível realizar a operação."

     

    Qual o formato que está formatado seu campo A1 ?

    Abraços

    terça-feira, 24 de agosto de 2010 13:49
  • Coloque uma data qualquer e mude a linha para

    ie.document.forms.Item(0).Item(1).Value = Format(Plan1.Range("A1"), "dd/mm/yyyy")

    • Marcado como Resposta Jhuuu quinta-feira, 26 de agosto de 2010 11:29
    terça-feira, 24 de agosto de 2010 22:23
    Moderador
  • Opa, agora deu certo.

     

    A próxima dúvida é como posso pegar os dados e colar na planilha do excel ?

     

    Normalmente faço isso voi consulta web, mas acho q não vai funcionar nesse caso.

     

    Alguma sugestão ?

    Abraços

    quinta-feira, 26 de agosto de 2010 11:28
  • Sim, é possível. Selecione toda a tabela, copie e cole no Excel.


    http://www.ambienteoffice.com.br
    quinta-feira, 26 de agosto de 2010 21:45
    Moderador