如何使用Excel VBA运行WinSCP脚本?

时间:2016-10-25 18:36:41

标签: vba excel-vba winscp excel

我写了一个WinSCP脚本,将本地文件上传到SFTP站点。该脚本保存为.txt:

WinSCP.com
open sftp://username:password@address
cd /export/home/Desktop/Temp
put C:\Users\Dekstop\JPMC\a.xlsx
close
exit

然后我查看this post并将此代码写入Excel VBA:

Sub RunWinScp()
Call Shell("C:\Program Files (x86)\WinSCP\WinSCP.com /ini=nul/script=C:\Users\Desktop\WinSCPGetNew.txt")
End Sub

但是当我尝试运行它时,没有任何反应。没有错误,但文件也没有正确传输。有人可以帮忙吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

  • 您需要使用双引号将winscp.com的路径括起来,因为它包含空格
  • 您需要/ini=nul/script=...
  • 之间的空格
Call Shell("""C:\Program Files (x86)\WinSCP\WinSCP.com"" /ini=nul /script=C:\Users\Desktop\WinSCPGetNew.txt")
  • 删除winscp.com脚本开头的WinSCPGetNew.txt。 WinSCP中没有winscp.com命令。您已经在VBA中通过WinSCP.com函数运行Shell。这实际上已经在您链接到自己的问题中进行了介绍:Using VBA to run WinSCP script

虽然您最好使用/command switch在WinSCP命令行上指定命令,以避免需要单独的命令文件:

Call Shell( _
    """C:\Program Files (x86)\WinSCP\WinSCP.com"" " + _
    "/ini=nul " + _
    "/command " + _
    """open sftp://username:password@example.com/"" " + _
    """cd /export/home/Desktop/Temp"" " + _
    """put C:\users\Desktop\JPMC\a.xlsx"" " + _
    """close"" " + _
    """exit""")
相关问题