Achtung: Nicht von mir!

Put this in a Module and download files with

RetrieveFile "fileonserver", "C:\fileonpc"

Upload with:

Putfiletoserver "C:\fileonpc", "fileonserver"

And remember, your FTP Passes can be sniffed!

Code:
Option Explicit

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Const FTP_TRANSFER_TYPE_UNKNOWN = &H0



Const FTP_TRANSFER_TYPE_ASCII = &H1



Const FTP_TRANSFER_TYPE_BINARY = &H2



Const INTERNET_DEFAULT_FTP_PORT = 21 



Const INTERNET_SERVICE_FTP = 1



Const INTERNET_FLAG_PASSIVE = &H8000000



Const INTERNET_OPEN_TYPE_PRECONFIG = 0



Const INTERNET_OPEN_TYPE_DIRECT = 1



Const INTERNET_OPEN_TYPE_PROXY = 3



Const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4



Public Declare Function InternetCloseHandle Lib "wininet" (ByRef hInet As Long) As Long



Public Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal sServerName As String, ByVal nServerPort As Integer, ByVal sUserName As String, ByVal sPassword As String, ByVal lService As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long



Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long



Public Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hConnect As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Long, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByRef dwContext As Long) As Boolean



Public Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hConnect As Long, ByVal lpszLocalFile As String, ByVal lpszNewRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean



Const PassiveConnection As Boolean = True



Const FTPAddress = "example.com"

Const UserName = "example"

Const Password = "example"

Const ProgName = "programname"



Public Sub RetrieveFile(sFile As String, sTargetFile As String)



    Dim hConnection As Long, hOpen As Long, sOrgPath  As String



    hOpen = InternetOpen(ProgName, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)



    hConnection = InternetConnect(hOpen, FTPAddress, INTERNET_DEFAULT_FTP_PORT, UserName, Password, INTERNET_SERVICE_FTP, IIf(PassiveConnection, INTERNET_FLAG_PASSIVE, 0), 0)



    FtpGetFile hConnection, sFile, sTargetFile, False, 0, FTP_TRANSFER_TYPE_UNKNOWN, 0



    InternetCloseHandle hConnection



    InternetCloseHandle hOpen



End Sub

Public Sub PutFileToServer(sLocalFile As String, sFtpFileName As String)



    Dim hConnection As Long, hOpen As Long, sOrgPath  As String



    hOpen = InternetOpen(ProgName, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)



    hConnection = InternetConnect(hOpen, FTPAddress, INTERNET_DEFAULT_FTP_PORT, UserName, Password, INTERNET_SERVICE_FTP, IIf(PassiveConnection, INTERNET_FLAG_PASSIVE, 0), 0)



FtpPutFile hConnection, sLocalFile, sFtpFileName, FTP_TRANSFER_TYPE_UNKNOWN, 0



    InternetCloseHandle hConnection



    InternetCloseHandle hOpen



End Sub