2010-09-20 105 views
9

我需要通过VBA才能使用SFTP。我有一个Access程序,它可以提取数据,操纵它,现在我必须找到一种方法来通过SFTP上传excel 07文件。使用VBA上传SFTP

我一直在网上寻找天,找不到任何东西。我在这里看到了一个类似的主题How to use sftp from within an MS Access database module?,我很想找到Mat Nadrofsky,因为好像他有解决方案,我只是无法理解它))))))))))))

so如果有人能解释一下这个解决方案是关于或有不同的解决方案 - 我会很感激 谢谢

回答

12

在之前的链接中,您可以使用一个sftp命令行客户端来连接Mat Nadrofsky。在这个例子中,我的sftp客户端是pscp.exe。该客户端的腻子工具的一部分: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,而不是外壳,如大卫·芬顿在以前的答案评论建议。

+0

首先,非常感谢你。我能够从链接帖子中找到这个人,他告诉我有关腻子的信息,并且我能够使用腻子和ShellAndWait工作。尽管你的VBA代码比我的好很多))))))))))))))一个问题,它可以在公司的笔记本电脑上工作,但不能工作。我确信有什么东西可以解决它,我问IT看看它是什么,但是过了几天,他尝试了几件事情,我有一种感觉,他会回来说“手动上传”。所以我不确定我现在在哪里,如果它因为腻子而被阻塞,或者我刚注意到什么 – lalachka 2010-09-25 12:19:57

+0

,您正在使用pscp.exe。我使用的也是Putty的psftp.exe。是否有可能不会阻止pscp.exe并且psftp.exe是?对我来说似乎不太可能,但我绝望的想让整个事情自动化并准备好尝试任何事情。我想让一个程序自动执行点击操作然后手动执行,这似乎是错误的。我希望有人能理解。 – lalachka 2010-09-25 12:40:41

+0

您是否可以通过工作网络中的任何方法使用sftp进行上传?如果没有,我的猜测是sftp端口在那里被阻塞。我怀疑pscp.exe与psftp.exe会有所不同,但是您可以尝试切换。当shell窗口不起作用时,您会在shell窗口中看到什么响应? – HansUp 2010-09-25 14:18:44

-1

我已经做到了在Access 97方式如下:

  1. 购买一个SFTP客户端具有可用于MS Access的OCX
  2. 写入VBA代码以使用SFTP控件

在一个特定情况下,没有OCX唯一的可执行文件 - 我们必须为该文件执行一个批处理文件。

+0

谢谢你,正如我在下文所说的,我的公司不会为此付出代价,所以我试图看看我能通过代码做什么。它看起来像我在我的帖子中给出的链接,他们找到了一个解决方案,我只是没有足够的知识来挑选他们的意思 – lalachka 2010-09-21 22:37:22

+0

你可能最终会花费更多的时间来建立自己的东西,而不仅仅是买断货架组件。构建与购买 – 2010-09-22 13:49:44

+0

是真实的,在某些情况下,它是值得购买它的,但在这个过程中我也学到了很多,其次,在这种情况下,我没有选择。我需要自动化一步,否则我可以通过手工完成。我的公司将永远不会为此付费,我完全理解。无论如何,我得到它的工作。 – lalachka 2010-10-12 21:06:27

0

您需要一些在Access中工作的SFTP ActiveX控件。我知道被VBA中的一些客户和特别是Access中的客户所使用。

+0

我以前看过你的网站,它看起来像它会为我工作,除了我需要这样做来节省我几个步骤,否则我可以做手工和我的公司将永远不会支付)))))感谢无论如何 – lalachka 2010-09-21 22:34:59