我写了一个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
但是当我尝试运行它时,没有任何反应。没有错误,但文件也没有正确传输。有人可以帮忙吗?
非常感谢!
答案 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""")