2010-09-20 43 views
9

necesito poder SFTP a través de VBA. Tengo un programa de acceso que extrae datos, los manipula y ahora tengo que encontrar la manera de cargar el archivo Excel 07 a través de SFTP.Carga de SFTP con VBA

He estado buscando en la red por días y no puedo encontrar nada. Vi un tema similar aquí How to use sftp from within an MS Access database module?, y me encantaría encontrar Mat Nadrofsky, porque parecía que tenía una solución, simplemente no puedo entender nada de eso)))))))))))

tan si alguien puede explicar lo que la solución estaba a punto o tiene una solución diferente - que realmente lo apreciaría gracias

Respuesta

12

En la respuesta anterior de SO que enlazó, Mat Nadrofsky utilizó un cliente de línea de comandos de sftp. En este ejemplo, mi cliente de sftp es pscp.exe. Ese cliente es parte de las herramientas de la masilla: PuTTY Download Page

Quiero construir y ejecutar un comando como este para copiar sample.txt a mi directorio en la máquina remota:

"C:\Program Files\PuTTY\pscp.exe" -sftp -l hans -pw changeme C:\Access\sample.txt 192.168.1.6:/home/hans/ 

Así que este procedimiento edificaré y ejecuta esa cadena de comando.

Public Sub SftpPut() 
    Const cstrSftp As String = """C:\Program Files\PuTTY\pscp.exe""" 
    Dim strCommand As String 
    Dim pUser As String 
    Dim pPass As String 
    Dim pHost As String 
    Dim pFile As String 
    Dim pRemotePath As String 

    pUser = "hans" 
    pPass = "changeme" 
    pHost = "192.168.1.6" 
    pFile = "C:\Access\sample.txt" 
    pRemotePath = "/home/hans/" 

    strCommand = cstrSftp & " -sftp -l " & pUser & " -pw " & pPass & _ 
     " " & pFile & " " & pHost & ":" & pRemotePath 
    Debug.Print strCommand 
    Shell strCommand, 1 ' vbNormalFocus ' 
End Sub 

Es posible que prefiera ShellAndWait en lugar de Shell, como David Fenton sugirió en un comentario en la respuesta anterior.

+0

en primer lugar, muchas gracias. Pude encontrar al chico de la publicación de enlace y él me habló sobre la masilla y pude hacer que funcionara con masilla y ShellAndWait. su código VBA es mucho mejor que el mío))))))))))))) Un problema, funciona en una computadora portátil de la empresa desde su casa pero no desde el trabajo.Estoy seguro de que algo lo está bloqueando, y le pedí a la TI que vea qué es, pero han pasado días, intentó algunas cosas y tengo la sensación de que volverá y dirá "Subir a mano". así que no estoy seguro de dónde estoy ahora, si está siendo bloqueado por putty o qué – lalachka

+0

acabo de notar algo, estás usando pscp.exe. Estaba usando psftp.exe, también de Putty. ¿Existe la posibilidad de que pscp.exe no se bloquee y psftp.exe? me parece poco probable, pero estoy desesperado por tener todo automatizado y listo para probar cualquier cosa. me parece incorrecto tener un programa automatizado con un clic y luego sftp a mano. espero que alguien lo entienda – lalachka

+0

¿Puede subir con sftp por cualquier método desde la red de su lugar de trabajo? Si no, supongo que el puerto sftp está bloqueado allí. Dudo que pscp.exe contra psftp.exe haga la diferencia, pero puedes intentar cambiar de todos modos. ¿Qué respuesta ves en la ventana del shell cuando no funciona? – HansUp

-1

lo he hecho de la siguiente manera en Access 97:

  1. Comprar un cliente SFTP que tiene un OCX que está disponible para MS Access
  2. Escriba el código VBA para usar el control SFTP

En un caso particular, no había un archivo ejecutable solo de OCX, teníamos que hacer un archivo por lotes para ese.

+0

gracias, como he dicho antes, mi empresa no pagará por eso, así que estoy tratando de ver si hay algo que pueda hacer por código. Parecía que en el enlace que estoy dando en mi publicación encontraron una solución, simplemente no tengo suficiente conocimiento para entender lo que querían decir. – lalachka

+0

Probablemente terminará gastando más tiempo en construir algo usted mismo que simplemente comprar un el componente de estante. Build-vs-Buy –

+0

cierto, y en algunos casos vale la pena comprarlo, pero en el proceso también puedo aprender mucho y, en segundo lugar, en este caso no tengo otra opción. Necesito automatizar un paso que de otra manera podría hacer a mano. mi compañía nunca pagará por eso y lo entendería totalmente. de todos modos, lo tengo para trabajar. – lalachka

0

Necesitará algún control SFTP ActiveX que funcione en Access. Sé que our SFTP control es utilizado por algunos clientes en VBA y en Access en particular.

+0

vi su sitio antes y parece que funcionaría para mí, excepto que necesito hacer esto para salvarme unos pasos que de otra manera podría hacer a mano y mi compañía nunca pagará por eso)))) gracias de todos modos – lalachka