Notifications
Clear all

Fazer Download via FTP - Arquivo .csv Não atualiza

2 Posts
1 Usuários
0 Reactions
1,438 Visualizações
(@necron)
Posts: 117
Estimable Member
Topic starter
 

Galera,

Estou usando um script para fazer download via FTP retirado desse site: http://www.ambienteoffice.com.br/office ... _arquivos/

Ele funciona e já até coloquei em pratica. Mas hoje descobri uma especie de BUG. EX:

Meu script baixa uma arquivo via FTP no formato CSV, e dentro do CSV esta escrito "v1.5". Hoje eu alterei esse arquivo .CSV, coloquei um que dentro esta escrito "v1.6", mas o script só baixa o antigo. Minha duvida é, será que ele armazenou esse o arquivo antigo em alguma especie do cookeis ou arquivo temporario ou cache... Sei lá, talvez eu tenha que limpar cache ou cokie antes de executar esse codigo?

#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 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

Function Verificar_VERSAO()

    Dim sURL As String
    Dim sDestino As String
    Dim blSucesso As Boolean
    Dim Arquivo As String
    Dim versao As String
    
    'Altere as informações abaixo de acordo com sua necessidade
    sURL = "http://welton.site90.com/PAP_Versao/VERSAO.csv"
    sDestino = ThisWorkbook.Path & "VERSAO.csv"

    'Baixa o arquivo da internet e verifica se não houve erro
    blSucesso = DownloadArquivo(sURL, sDestino)
    If Not blSucesso Then
        MsgBox "Erro ao se conectar com Servidor FTP!" _
          , vbCritical _
          , "Erro!"
    End If

    'Salva o texto que esta dentro do arquivo .csv em uma variável
    Arquivo = ThisWorkbook.Path & "/VERSAO.csv"
    Open Arquivo For Input As 1
    Line Input #1, versao
    Close #1

    'Apaga arquivos temporarios
    If Dir(Arquivo) <> "" Then Kill (Arquivo)

    'Verifica se a versão da planilha é a atual
    If Sheets("Parametros").Range("C31").Value <> versao Then

        If MsgBox("ATENÇÃO: Uma nova versão da PAP esta disponivel, " & _
        "deseja atualizar agora?" & vbNewLine & vbNewLine & _
        "Versão Atual: " & Sheets("Parametros").Range("C31").Value & vbNewLine & _
        "Versão Nova: " & versao, vbYesNo, "ATUALIZAÇÃO DISPONIVEL") = vbYes Then

                MsgBox "ok!, estou desenvolvendo"

        Else

                
                MsgBox "Você optou por não atualizar agora, portanto a planilha " & _
                "ficará disponivel apenas para CONSULTAS.", vbExclamation
                
        End If
    End If


End Function

Fui Util? Click na "Mãozinha" ali do lado >>>> e agradeça.

 
Postado : 13/02/2015 12:27 pm
(@necron)
Posts: 117
Estimable Member
Topic starter
 

MILHÕES DE DESCULPA A TODOS!!!

É a terceira vez que peço ajuda aqui e depois encontro a resposta em foruns Gringo, mas eu juro que ja estava procurando a umas 2 horas!

Realmente, esse codigo de fazer download salva o download em cache, e portanto se você quer que ele sempre baixe o arquivo mais atual (um novo arquivo sempre), é necessário sempre excluir o cache!

Abaixo a rotina que exclui o cache:

Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
   Alias "DeleteUrlCacheEntryA" _
  (ByVal lpszUrlName As String) As Long


Function Excluir_Cache()

    Dim sURL As String
    
    'Altere as informações abaixo de acordo com sua necessidade
    sURL = "http://welton.site90.com/PAP_Versao/VERSAO.csv"
    
    'Excluir Cache - Necessário para que sempre efetue
    'o download do arquivo mais atualizado no ftp
    Call DeleteUrlCacheEntry(sURL)

End Function

Fui Util? Click na "Mãozinha" ali do lado >>>> e agradeça.

 
Postado : 13/02/2015 12:51 pm