... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$182,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Baixar Arquivo em Servidor FTP

Usuário Ilson:

Boa tarde!

É possível obter o nome de um arquivo no servidor FTP? Se a resposta for positiva, qual o comando utilizar?  Seria o mesmo utilizado quando desejamos saber o nome em pastas do computador em uso (Dir(c:/pasta/pasta/arquivo.ext)) ?

Minha necessidade é a seguinte: atualizar um aplicativo em vários clientes, enviando o pacote de instalação para o servidor FTP.   Atualmente, este pacote é enviado ao cliente e o aplicativo faz a verificação, em pasta fixa, se existe um arquivo com número de versão diferente da que está em uso, gravada no registro do Windows.  Usando a mesma lógica, gostaria de verificar no servidor FTP se existe um arquivo que contém no nome (ex: Versao100999.exe) uma versão com número superior ao da versão em uso. Neste caso seria baixado o pacote e executada a atualização.

Fico grato se puder me ajudar. Abraços.

Suporte:

Olá, Ilson!

Serve o Vba baixar um arquivo, automaticamente, sempre que abrir o aplicativo, para uma pasta local e então analisar este arquivo baixado?

Usuário Ilson:

Olá, Avelino, obrigado por analisar meu pedido. Havia pensado nessa hipótese, porém, o arquivo de instalação é grande e seria demorado baixá-lo, todas as vezes e, na maioria delas, não seria utilizado. Com a sua resposta me ocorreu uma outra saída e, portanto, fico grato se puder informar uma forma rápida de fazer a baixa na forma sugerida.

Abraços e Obrigado.

Suporte:

Ilson, O que eu imaginei foi você usar um arquivo txt. Ao abrir o aplicativo, este pequeno txt é baixado, e nele então, você verifica a necessidade de atualização.  Ao sair do aplicativo, esse txt é deletado. Caso necessite atualizar, você baixa de forma automática o aplicativo ou gera mensagem de nova atualização.

Testei aqui com o meu FTP e funcionou com o código abaixo.  Tente adaptá-lo para o seu caso.

Public Sub FtpReceber()
Dim vPath As String
Dim vFile As String
Dim vFTPServ As String
Dim fNum As Long

vPath = "e:\redeaccess\avelino"
vFile = "C150928A.TXT" 'nome do arquivo a ser baixado
vFTPServ = "www.redeaccess.com.br" 'Seu servidor

'Montando o comando ftp.exe
fNum = FreeFile()
Open vPath & "\FtpComm.txt" For Output As #fNum
Print #1, "user pastaftp@redeaccess.com.br" 'Usuário
Print #1, "suaSenha" 'Senha
Print #1, "get " & """" & vFile & """" & " " & vPath & "\ftp\" & vFile 'Donwload do FTP
Print #1, "close" 'Fecha conexão
Print #1, "quit" 'Fecha programa FTP
Close

shell "ftp -n -i -g -s:" & vPath & "\FtpComm.txt " & vFTPServ, vbNormalNoFocus

End Sub

Usuário Ilson:

Resolvi e já testei a solução que encontrei para este caso.  Em um módulo, criei a seguinte função (o aplicativo funciona no Access 2007 e 2010):

#If VBA7 Then
Public Declare PtrSafe 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
#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
-----------------------------------------------------------------------------------
Public Function fncDownloadFile(Url As String, LocalFilename As String) As Boolean
Dim lngRetVal As Long

lngRetVal = URLDownloadToFile(0, Url, LocalFilename, 0, 0)
If lngRetVal = 0 Then
   If Dir(LocalFilename) <> vbNullString Then
      fncDownloadFile = True
   End If
End If

End Function

Suporte:

Sucesso Ilson e obrigado pelo feedback!

 


 

 


Não há comentário

Envie seu comentário: