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:
- Compre un cliente SFTP que tenga un OCX que esté disponible para MS Access
- 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.