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



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

Dim myPath As String
myPath = "F:MyExecutablesProg_copy.exe"
iReturn = wsh.Run(myPath, windowStyle, waitOnReturn)

如果程序执行成功,iReturn会给我1,如果出现任何错误或异常,则会给我0。如果返回值为0,我希望在VBA中获取异常详细信息(至少是异常消息(。怎么能做到呢。?

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

假设您的程序使用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:MyExecutablesProg_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。如果程序使用不同的方法输出错误,则需要使用不同的方式来捕获错误。

最新更新