Conectarse a FTP desde Excel para automatizar el uso compartido de archivos(VBA Beginner)
excel-vba (1)
Soy un principiante y nuevo en Excel VBA, pero estoy tratando de automatizar el intercambio de archivos en FTP (WinSCP) al conectarme a Excel y tal vez crear una macro que me ayude. En FTP, fui a la sesión> Generar URL de sesión / código> Script (archivo de script) y el siguiente código está allí:
open ftp://myUsername:myPassword@theHostname/
# Your command 1
# Your command 2
exit
Supongo que la línea abierta conectaría Excel a FTP. Estoy haciendo referencia al código de este sitio para ponerlo en el área ''# comando'': https://www.mrexcel.com/forum/excel-questions/261043-connecting-ftp-excel.html
open ftp://myUsername:myPassword@theHostname/
Option Explicit
Sub FtpTest()
MsgBox fnDownloadFile("ftp://yoursite", "username", "password", _
"The name of your file", _
"C:/The name of your file to save as")
End Sub
Function fnDownloadFile(ByVal strHostName As String, _
ByVal strUserName As String, _
ByVal strPassWord As String, _
ByVal strRemoteFileName As String, _
ByVal strLocalFileName As String) As String
''// Set a reference to: Microsoft Internet Transfer Control
''// This is the Msinet.ocx
Dim FTP As Inet ''As InetCtlsObjects.Inet
Set FTP = New Inet ''InetCtlsObjects.Inet
On Error GoTo Errh
With FTP
.URL = strHostName
.Protocol = 2
.UserName = strUserName
.Password = strPassWord
.Execute , "Get " + strRemoteFileName + " " + strLocalFileName
Do While .StillExecuting
DoEvents
Loop
fnDownloadFile = .ResponseInfo
End With
Xit:
Set FTP = Nothing
Exit Function
Errh:
fnDownloadFile = "Error:-" & Err.Description
Resume Xit
End Function
exit
Lo hice como decía este sitio para ir a VBA Editor> Herramientas> referencia y marcar Microsoft Internet Control.
1) ¿Estoy usando el código correcto? ¿Lo coloqué en el área correcta (en el área ''# comando'')? Y ahora pongo todo el código en un Botón de Comando, pero cuando hago clic en él me da un Error de Sintaxis que resalta la primera línea: Private Sub CommandButton1_Click ())
2) ¿Dejo el Msgbox en la 3ª línea como para esperar la entrada del usuario o lo llené con mi nombre de usuario / contraseña / nombre de host? (Todavía no soy muy bueno con las funciones en VBA) Si lo llenó en el código, ¿qué valor pongo para "yoursite" ya que no estoy accediendo a un sitio web?
Lo siento, estoy tan confundido :( ¡Cualquier ayuda sería genial y gracias de antemano!
Creo que debería echar un vistazo aquí - Referencia de Excel VBA para objetos Inet Aquí se muestra cómo agregar referencia para objetos INet en vba. Además, cuando solo quiere probar si el código funciona, en lugar de asignar macro a un botón, etc., si usa "Función", cuando vaya a la celda de la hoja de trabajo y empiece a escribir = fnDown ... Debería ver su macro - allí puedes poner tus parámetros de función. Sin embargo, antes que nada, tiene que encargarse de la referencia a Inet.
Este enlace también puede ser útil: VBA Excel y FTP con MSINET.OCX y tipo de Inet