使用VBA上传SFTP

时间:2010-09-20 19:45:27

标签: vba sftp

我需要能够通过VBA进行SFTP。我有一个Access程序来提取数据,操作它,现在我必须找到一种方法来通过SFTP上传excel 07文件。

我一直在网上看几天,找不到任何东西。我在这里看到一个类似的话题How to use sftp from within an MS Access database module?,我很想找到Mat Nadrofsky,因为看起来他有一个解决方案,我只是无法理解其中任何一个))))))))))< / p>

所以,如果有人能解释该解决方案的内容或有不同的解决方案 - 我真的很感激 谢谢

3 个答案:

答案 0 :(得分:12)

在您之前链接的SO答案中,Mat Nadrofsky使用了sftp命令行客户端。在这个例子中,我的sftp客户端是pscp.exe。该客户端是PuTTY工具的一部分:PuTTY Download Page

我想构建并运行这样的命令,将sample.txt复制到远程计算机上的主目录:

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

因此,此过程将构建并运行该命令字符串。

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

您可能更喜欢ShellAndWait而非Shell,正如David Fenton在对前一个答案的评论中所说的那样。

答案 1 :(得分:0)

您需要一些可在Access中使用的SFTP ActiveX控件。我知道某些客户在VBA和Access中使用our SFTP control

答案 2 :(得分:-1)

我在Access 97中以下列方式完成了它:

  1. 购买具有可供MS Access使用的OCX的SFTP客户端
  2. 编写VBA代码以使用SFTP控件
  3. 在一个特定情况下,没有OCX - 只有可执行文件 - 我们必须为该文件执行批处理文件。