r39 extensions extensiones extension descargar chrome vba sftp

vba - extensions - get crx



Carga de SFTP con VBA (3)

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.

He estado buscando en la red durante días y no puedo encontrar nada. Vi un tema similar aquí ¿Cómo usar sftp desde dentro de un módulo de base de datos de MS Access? , y me encantaría encontrar a Mat Nadrofsky, porque parecía que tenía una solución, simplemente no puedo entender nada de eso)))))))))))

entonces, si alguien puede explicar de qué se trataba esa solución o si tiene una solución diferente, realmente lo agradecería.


Lo he hecho de la siguiente manera en Access 97:

  1. Compre un cliente SFTP que tenga 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 ningún archivo ejecutable OCX, solo teníamos que hacer un archivo por lotes para ese.


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


En la respuesta anterior de SO que enlazaste, Mat Nadrofsky usó un cliente de línea de comando sftp. En este ejemplo, mi cliente de sftp es pscp.exe. Ese cliente es parte de las herramientas PuTTY : página de descarga de PuTTY

Quiero construir y ejecutar un comando como este para copiar sample.txt a mi directorio de inicio 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/

Entonces este procedimiento construirá y ejecutará 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 sugirió David Fenton en un comentario sobre la respuesta anterior.