Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 在MS Access VBA中执行外部程序并在VBA中捕获异常_Shell_Ms Access_Vba_Ms Access 2016 - Fatal编程技术网

Shell 在MS Access VBA中执行外部程序并在VBA中捕获异常

Shell 在MS Access VBA中执行外部程序并在VBA中捕获异常,shell,ms-access,vba,ms-access-2016,Shell,Ms Access,Vba,Ms Access 2016,我想从MS Access VBA代码执行一个程序。点击一个按钮,程序就会执行。 我正在为此使用以下代码: Dim myPath As String myPath = "F:\MyExecutables\Prog_copy.exe" iReturn = wsh.Run(myPath, windowStyle, waitOnReturn) 如果程序成功执行,iReturn为1;如果出现任何错误或异常,iReturn为0。 如果返回值为0,我希望至少从VBA中的异常消息中获取异常详细信息。 你怎么能

我想从MS Access VBA代码执行一个程序。点击一个按钮,程序就会执行。 我正在为此使用以下代码:

Dim myPath As String
myPath = "F:\MyExecutables\Prog_copy.exe"
iReturn = wsh.Run(myPath, windowStyle, waitOnReturn)
如果程序成功执行,iReturn为1;如果出现任何错误或异常,iReturn为0。 如果返回值为0,我希望至少从VBA中的异常消息中获取异常详细信息。 你怎么能做到


注意:我使用try-catch块来处理prg_Copy.exe中不同类型的异常。

假设您的程序使用StdErr输出错误,您可以使用以下代码读取错误:

将PtrSafe Sub SleepEx Lib Kernel32.dll声明为ByVal dwms长,将可选的ByVal bAlertable声明为Boolean=True 公共子系统 将wsh设置为对象 Set wsh=CreateObjectWScript.Shell 将myPath设置为字符串 myPath=F:\MyExecutables\Prog\u copy.exe 作为对象的dimex Set ex=wsh.Run&myPath& 执行时,例如状态=0'wshr正在运行 睡眠50 环 如果ex.Status=2'WshFailed Debug.Print ex.StdErr.ReadAll'打印任何错误 如果结束 端接头 大多数控制台程序向StdErr输出错误。如果您的程序使用不同的方法输出错误,则需要使用不同的方法捕获错误