尝试自动化WinSCP时Visual Basic字符串语法错误

时间:2014-10-22 13:30:36

标签: excel vba excel-vba winscp

我希望使用thing string Shell()函数在发生保存时自动将excel文件上传到ftp服务器:

strShell = "C:\Program Files\WinSCP\WinSCP.exe /console /command " & Chr(34) & "option batch on" & Chr(34) & " " & Chr(34) & "open user:pass@localhost" & Chr(34) & " " & Chr(34) "put " ThisWorkbook.Path & "/" & ThisWorkbook.Name & "/home/User/Directory" & Chr(34) & " " & Chr(34) "exit" & Chr(34)

由于某种原因,我收到此字符串的语法错误。我在VBA方面的知识并不广泛,但过去几个小时我在MSDN上的访问似乎没什么帮助。

2 个答案:

答案 0 :(得分:2)

我怀疑你需要更多包含空格的文件路径的引号。就像是 strShell = "'C:\Program Files\WinSCP\WinSCP.exe' /console /command " & Chr(34) & ....

你也忘了一些" &"就像在3dr线上一样:
Chr(34) & "put " & ThisWorkbook.Path &
再次在那一行,你可能需要用引号括起文件名!

您最好的帮助是包含Debug.Print strShell并在VBE立即窗口中观看结果(^ G)

答案 1 :(得分:0)

根据WinSCP的文档,您需要在命令周围添加双引号。例如: WinSCP.exe /command "option batch abort"

所以在VBA中会是:"WinSCP.exe /command ""option batch abort"""