如何解决使用从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 举报,一经查实,本站将立刻删除。