使用带VBA的SFTP下载文件

时间:2012-05-03 14:18:58

标签: vba ms-access download sftp

我的目标是下载,而不是从SFTP服务器上传文件,我正在尝试调整此网站上另一个问题的代码来执行此操作(为方便起见,我粘贴了下面的代码)。

我从Putty下载了PSFTP。当我尝试使用以下命令行进行连接时,PSFTP关闭:

open username:password@server.com.port:1111 

我有三个问题:

  1. 我的命令行有问题吗?如果不是那么可能是什么问题?

  2. 据我所知,SFTP通常会使用get / put命令,但我在下面的代码中看不到put命令,所以我不明白我应该在哪里输入get命令来下载文件而不是上传它(这是下面的代码应该做的)。

  3. pRemotePath是SFTP服务器上文件的位置是否正确,pFile是我希望文件下载到的位置?

  4. 非常感谢一个简单的解释。

    Public Sub SftpGet()
    
        Const cstrSftp As String = """C:\Users\Ron\UtilityTools\psftp.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 = "uid"
        pPass = "PW"
        pHost = "dns"
        pFile = "C:\Users\Ron\activity.txt" 
        pRemotePath = "Z:/activity.log"
    
        strCommand = cstrSftp & " -sftp -l " & pUser & " -pw " & pPass & _
            " " & pFile & " " & pHost & ":" & pRemotePath
        Debug.Print strCommand
        Shell strCommand, 1 ' vbNormalFocus '
    End Sub
    

1 个答案:

答案 0 :(得分:1)

我认为你应该从Windows命令提示会话开始。正如我在回答类似问题时建议的那样,在那里计算出命令行的详细信息:SFTP upload with VBA。一旦你有一个在那里工作的命令行,从VBA执行相同的命令将非常容易。

我从未使用Putty的psftp.exe工具,仅使用pscp.exe,因此我无法提供有关如何构建psftp.exe命令行的帮助。我在Putty's documentation注意到的一件事是PSFTP(pscp.exe)只能与SSH-2服务器一起工作---如果你的目标服务器只支持SSH-1,PSFTP将不起作用。

我认为您在该链接上查看Putty文档是值得的。