none
Buscar valor de arquivos .txt em um servidor FPT RRS feed

  • Pergunta

  • Ola pessoal!!

    Preciso buscar valores de diversos arquivos .txt que estão hospedados em um servidor fpt.

    Por exemplo:

    ftp://ftp.cetip.com.br/MediaCDI/20150102.txt
    ftp://ftp.cetip.com.br/MediaCDI/20150105.txt

    ftp://ftp.cetip.com.br/MediaCDI/20150106.txt

    ...

    (Estes links estão na C2:C9999)

     

    Queria ajuda pra criar um código que entre no link da coluna C e retorne o texto do arquivo na coluna D.

    Alguém pode me ajudar? 

    sexta-feira, 14 de agosto de 2015 15:07

Respostas

  • Primeiro, você tem que baixar os dados do FTP e depois processá-los.

    Para baixar um arquivo, adapte o código abaixo:

    #If VBA7 Then
        Public Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As LongPtr _
          , ByVal szURL As String _
          , ByVal szFileName As String _
          , ByVal dwReserved As LongPtr _
        , ByVal lpfnCB As LongPtr) As Long
    #Else
        Public Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long _
          , ByVal szURL As String _
          , ByVal szFileName As String _
          , ByVal dwReserved As Long _
        , ByVal lpfnCB As Long) As Long
    #End If
    
    Private Sub Baixar()
        'Declaração de variáveis
        Dim sURL As String
        Dim sDestino As String
        Dim blSucesso As Boolean
        
        'Altere as informações abaixo de acordo com sua necessidade
        sURL = "http://www.ambienteoffice.com.br/topo.jpg"
        sDestino = ThisWorkbook.Path & "\" & "topo.jpg"
        
        'Baixa o arquivo da internet
        blSucesso = DownloadArquivo(sURL, sDestino)
        If blSucesso Then
            MsgBox "Arquivo baixado com sucesso!" _
              , vbInformation _
              , "Informação"
        Else
            MsgBox "Erro ao tentar baixar o arquivo!" _
              , vbCritical _
              , "Erro!"
        End If
    End Sub
    
    Private Function DownloadArquivo(sURL As String, sDestino As String) As Boolean
        Dim l As Long
        l = URLDownloadToFile(0, sURL, sDestino, 0, 0)
        If l = 0 Then DownloadArquivo = True
    End Function


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 9 de outubro de 2015 13:21
    Moderador

Todas as Respostas

  • Gutembergue, bom dia!

    Estou com a mesma dúvida. Também preciso pegar o DI Over do FTP da Cetip.

    Por acaso conseguiu implementar uma solução?

    Grato!

    sexta-feira, 9 de outubro de 2015 13:03
  • Primeiro, você tem que baixar os dados do FTP e depois processá-los.

    Para baixar um arquivo, adapte o código abaixo:

    #If VBA7 Then
        Public Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As LongPtr _
          , ByVal szURL As String _
          , ByVal szFileName As String _
          , ByVal dwReserved As LongPtr _
        , ByVal lpfnCB As LongPtr) As Long
    #Else
        Public Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long _
          , ByVal szURL As String _
          , ByVal szFileName As String _
          , ByVal dwReserved As Long _
        , ByVal lpfnCB As Long) As Long
    #End If
    
    Private Sub Baixar()
        'Declaração de variáveis
        Dim sURL As String
        Dim sDestino As String
        Dim blSucesso As Boolean
        
        'Altere as informações abaixo de acordo com sua necessidade
        sURL = "http://www.ambienteoffice.com.br/topo.jpg"
        sDestino = ThisWorkbook.Path & "\" & "topo.jpg"
        
        'Baixa o arquivo da internet
        blSucesso = DownloadArquivo(sURL, sDestino)
        If blSucesso Then
            MsgBox "Arquivo baixado com sucesso!" _
              , vbInformation _
              , "Informação"
        Else
            MsgBox "Erro ao tentar baixar o arquivo!" _
              , vbCritical _
              , "Erro!"
        End If
    End Sub
    
    Private Function DownloadArquivo(sURL As String, sDestino As String) As Boolean
        Dim l As Long
        l = URLDownloadToFile(0, sURL, sDestino, 0, 0)
        If l = 0 Then DownloadArquivo = True
    End Function


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 9 de outubro de 2015 13:21
    Moderador
  • Pessoal,

    Tem dois artigos que podem te ajudar a ter outras ideias.

    http://ecode10.com/artigo/238/Lendo-Arquivo-txt-usando-Visual-Studio-NET-2005

    http://ecode10.com/artigo/96/Lendo-dados-de-um-arquivo-TXT-e-gravando-os-em-um-Banco-de-Dados-SQL-Server-2000

    Eu gosto de criar um Windows Service para fazer isso de forma automática.

    Depois de ler os arquivos eu geralmente apago ou mudo ele de lugar usando o mesmo serviço.

    http://ecode10.com/artigo/1080/Deletando-todos-os-arquivos

    http://ecode10.com/artigo/1152/Trabalhando-com-diretorio-e-arquivo


    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    sexta-feira, 9 de outubro de 2015 13:56