我想从MS Access VBA代码执行一个程序。单击按钮后,程序应执行。 我为此使用以下代码:
Dim myPath As String
myPath = "F:\MyExecutables\Prog_copy.exe"
iReturn = wsh.Run(myPath, windowStyle, waitOnReturn)
如果程序成功执行,iReturn给我1,如果有错误或异常,给我0。 如果返回值为0,我想在VBA中获取异常详细信息(至少是异常消息)。 该怎么办??
注意:我正在使用try catch块来处理prg_Copy.exe中的不同类型的异常。
答案 0 :(得分:1)
假设您的程序使用StdErr
输出错误,则可以使用以下代码读取错误:
Declare PtrSafe Sub SleepEx Lib "Kernel32.dll" (ByVal dwMilliseconds As Long, Optional ByVal bAlertable As Boolean = True)
Public Sub RunSomething()
Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
Dim myPath As String
myPath = "F:\MyExecutables\Prog_copy.exe"
Dim ex As Object
Set ex = wsh.Run("""" & myPath & """")
Do While ex.Status = 0 'WshRunning
SleepEx 50
Loop
If ex.Status = 2 'WshFailed
Debug.Print ex.StdErr.ReadAll 'Print any errors
End If
End Sub
大多数控制台程序将错误输出到StdErr。如果您的程序使用其他输出错误的方法,则需要使用其他方式捕获错误。