Ejemplo que permite descargar y subir archivos a un Ftp utilizando el control Microsoft Transfer controlEl ejemplo es como muestra el gráfico:

Para agregar el Control Inet, seleccionar desde la ficha componentes Microsoft Internet Transfer control

También agregar los siguiente controles:
- Un control commonDialog llamado CommonDialog1 para seleccionar la ruta del archivo a subir y también para descargar
- Cinco controles TextBox: txt_servidor, txt_Usuario, txt_Pass, txt_local y txt_Remoto: Esto es para el nombre del servidor ftp, para el nombre de Usuario y contraseña del Login y para las rutas de los archivos.
- Un control ListBox llamado List1 para ver el estado.
- Cuatro CommandButton: El Command1 para Subir un fichero, Command2 para descargar, Command3 para seleccionar un fichero del disco a subir, y Command4 para seleccionar ruta y nombre del archivo a descargar a disco.
Código fuente en un formulario:
Option Explicit Private Sub Mostrar_Estado_FTP(ByVal estado As String) List1.AddItem estado List1.ListIndex = List1.ListCount - 1 End Sub Private Sub Command2_Click() Dim El_Host As String If txt_Remoto = "" Then MsgBox " No hay archivo para descargar", vbInformation Exit Sub End If List1.AddItem " ..Descargando " 'Asigna la Url, es decir el nombre del Host FTP El_Host = "ftp://" & txt_servidor With Inet1 .URL = El_Host 'nombre de usuario y password de la cuanta FTP .UserName = txt_Usuario .Password = txt_Pass 'DEscarga el archivo indicado con el comando Get Call .Execute(, "Get " & txt_Remoto & " " & txt_local) DoEvents End With End Sub Private Sub Command1_Click() Dim El_Host As String If txt_local = "" Then MsgBox " No hay archivo pra subir", vbInformation Exit Sub End If List1.AddItem " ..Subiendo archivo " El_Host = "ftp://" & txt_servidor With Inet1 'Asigna la Url, es decir el nombre del Host FTP .URL = El_Host 'nombre de usuario y password de la cuanta FTP .UserName = txt_Usuario .Password = txt_Pass 'Escribe el fichero en el servidor con el comando Put Call .Execute(, "Put " & txt_local & " " & txt_Remoto) DoEvents End With End Sub 'botón para seleccionar fichero a subir al Ftp Private Sub Command3_Click() With CommonDialog1 .DialogTitle = " Seleccione el archivo a subir" .ShowOpen If .FileName = "" Then txt_local = "" Exit Sub Else txt_local = .FileName End If End With End Sub 'botón para seleccionar la ruta y nombre de archivo a descargar Private Sub Command4_Click() With CommonDialog1 .DialogTitle = " Seleccione ruta y nombre del archivo a descargar" .ShowSave If .FileName = "" Then txt_Remoto = "" Exit Sub Else txt_Remoto = .FileName End If End With End Sub Private Sub Inet1_StateChanged(ByVal State As Integer) Select Case State 'Dependiendo del valor recibido de State _ muestra en el List1 la información de estado Case 0: Mostrar_Estado_FTP " Nothing " Case 1: Mostrar_Estado_FTP " Resolviendo Host " Case 2: Mostrar_Estado_FTP " Host Resuelto " Case 3: Mostrar_Estado_FTP " ..Conectando a: " & txt_servidor Case 4: Mostrar_Estado_FTP ".. Conectado a " & txt_servidor Case 5: Mostrar_Estado_FTP " Petición" Case 6: Mostrar_Estado_FTP " ..enviando petición" Case 7: Mostrar_Estado_FTP " Recibiendo Respuesta " Case 8: Mostrar_Estado_FTP " Respuesta recibida " Case 9: Mostrar_Estado_FTP " ..Desconectando " Case 10: Mostrar_Estado_FTP " Estado : Desconectado" Case 11: Mostrar_Estado_FTP " Error: " & Inet1.ResponseInfo Case 12: Mostrar_Estado_FTP Inet1.ResponseInfo Case Else: Mostrar_Estado_FTP " Estado -> " & Format$(State) End Select DoEvents End Sub Private Sub Form_Load() Command1.Caption = "Subir archivo " Command2.Caption = " Descargar archivo " Me.Caption = "Ejemplo del control Inet para descargar y subir ficheros" End Sub