微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用从VBA执行的WinSCP批处理脚本返回FTP上传的状态?

如何解决使用从VBA执行的WinSCP批处理脚本返回FTP上传的状态?

我正在与多个用户共享Excel工作簿,这些用户正在执行执行以下WinSCP批处理脚本的宏:

"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
  /command ^
    "open ftp://user:pass@ftp.website.org/" ^
    "cd /incoming/data" ^
    "put ""%~dp0file.txt""" ^
    "exit"

set WINSCP_RESULT=%ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
  echo Success
) else (
  echo Error
)

exit /b %WINSCP_RESULT%

该脚本是通过VBA执行的,如下所示:

Call Shell("C:\Users\" & Environ("username") & "\Sharepoint - Library Folder\FTP\ftpupload.bat")

执行后,命令窗口将显示1-2秒并消失。有没有办法让它保留成功/错误结果,甚至更好的办法是将其传递回VBA,以便我可以在Ok-Window中显示结果?

注意:我想避免在VBA中注册WinSCP COM,因为该工作簿已被多个人使用,因此我需要尽可能简单地简化它。

解决方法

您的批处理文件已经返回表明错误/成功的退出代码。

因此,您所需要做的就是捕获代码并采取相应的行动。
为此,请参见Is it possible to return error code to VBA from batch file?

Set oSHELL = VBA.CreateObject("WScript.Shell")
Dim exitCode As Integer
exitCode = oSHELL.Run("""C:\Users\" & Environ("username") & "\Sharepoint - Library Folder\FTP\ftpupload.bat""",True)
If exitCode <> 0 Then
    MsgBox "Failed",vbOKOnly,"Failure"
Else
    MsgBox "Succeeded","Success"
End If

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。