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

How to use Excel VBA to run WinSCP Script?

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

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

然后我看把这段代码写成Excel VBA:

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

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

非常感谢!

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

尽管您最好使用 /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""")