Copia todas las sentencias FTP en un archivo .BAT y lo ejecutas desde VB...
v_tipo = "ascii"
'Crea archivo de comandos ftp según la acción que corresponda
v_Archivo_ftp = m_dir_local & "\" & "ArchFtp.dat"
'Archivo Semaforo
v_Archivo_tmp = m_dir_local & "\" & "EstaOcup.tmp"
v_Archi = FreeFile
Open v_Archivo_ftp For Output As #v_Archi
Print #v_Archi, "open " & m_Servidor
Print #v_Archi, m_usuario
Print #v_Archi, m_Password
Select Case m_accion
Case "E": 'Enviar archivos al directorio remoto
Print #v_Archi, "cd " & m_dir_remoto
Print #v_Archi, v_tipo
Print #v_Archi, "put " & LCase(m_dir_local & "\" & m_archivo)
'---Valida existencia de archivo-------------------
Print #v_Archi, "mls"
Print #v_Archi, m_archivo
Print #v_Archi, m_dir_local & "\retftp.txt"
Print #v_Archi, "y"
'---Valida existencia de archivo-------------------
Case "T": 'Traer archivos del directorio remoto
Print #v_Archi, "cd " & m_dir_remoto
Print #v_Archi, v_tipo
Print #v_Archi, "get"
Print #v_Archi, LCase(m_archivo)
Print #v_Archi, LCase(m_dir_local & "\" & m_archivo)
End Select
Print #v_Archi, "!del " & v_Archivo_tmp
Print #v_Archi, "close"
Print #v_Archi, "bye"
Close #v_Archi
'Crea archivo semaforo
v_Archi = FreeFile
Open v_Archivo_tmp For Output As #v_Archi
Print #v_Archi, "Esta Ocupado"
Close #v_Archi
'Ejecuta archivo de comandos ftp
Comando_Ejecuto = "ftp -s:" & v_Archivo_ftp
Ejec = Shell(Comando_Ejecuto, vbHide)
Archivo_tmp = "EstaOcup.tmp"
'Mientras exista archivo semaforo quedese en el loop
While Archivo_tmp = "EstaOcup.tmp"
Archivo_tmp = dir(v_Archivo_tmp)
Wend
'Borra archivo de comandos ftp
Archivo_tmp = dir(v_Archivo_ftp, vbArchive)
While Archivo_tmp <> ""
Kill v_Archivo_ftp
Archivo_tmp = dir(v_Archivo_ftp, vbArchive)
DoEvents
Wend