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

问题描述 投票:0回答:1

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

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

然后我查看使用VBA运行WinSCP脚本,并将这段代码写入Excel VBA:

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

但是当我尝试运行它时,什么也没有发生。没有错误,但文件也没有正确传输。有人可以帮忙吗?

非常感谢!

vba excel winscp
1个回答
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
    。这实际上已经在您链接到自己的问题中涵盖了:使用 VBA 运行 WinSCP 脚本

尽管您最好使用

/command
开关 在 WinSCP 命令行上指定命令,以避免需要单独的命令文件:

Call Shell( _
    """C:\Program Files (x86)\WinSCP\WinSCP.com"" " + _
    "/ini=nul " + _
    "/command " + _
    """open sftp://username:[email protected]/"" " + _
    """cd /export/home/Desktop/Temp"" " + _
    """put C:\users\Desktop\JPMC\a.xlsx"" " + _
    """close"" " + _
    """exit""")
© www.soinside.com 2019 - 2024. All rights reserved.