Выполнение внешней программы в MS Access VBA и исключение отлова в VBA - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу выполнить программу из MS Access VBA Code.При нажатии кнопки программа должна быть запущена.Для этого я использую приведенный ниже код:

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

iReturn дает мне 1, если программа выполнена успешно, и 0 в случае любой ошибки или исключения.Я хочу получить подробности об исключении (по крайней мере, сообщение об исключении) в VBA, если возвращаемое значение равно 0. Как это сделать .?

Примечание. Я использую блоки try try для обработки различных типов исключений вмой prg_Copy.exe.

1 Ответ

0 голосов
/ 07 декабря 2018

Предполагая, что ваша программа выводит ошибки, используя 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.Если ваша программа использует другой метод вывода ошибок, вам нужно использовать другой способ их обнаружения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...