Макрос Excel: как получить уведомление, когда скрипт VBA останавливает выполнение - PullRequest
1 голос
/ 28 марта 2011

Я запускаю макрос на удаленном ПК, который выполняется каждые 5 секунд в течение дня.

Теперь я хочу, чтобы, если что-то пошло не так и макрос прекратил выполнение, я был проинформирован или уведомлен по электронной почте.

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 28 марта 2011

Обработка ошибок.

Sub MySub()
    On Error GoTo ErrorHandler

    ' Work done here...

    ' Screen for an expected error 
    If somethingWentWrong = True Then
        Err.Raise Number:=myErrorNumber, Source:="MySub", _
            Description:="This thing went wrong."
        ' Will now go to ErrorHandler
    End If

    ' More work done here...        

ExitProcedure:
    On Error Resume Next
    'Cleanup code goes here...
Exit Sub
ErrorHandler:
    ' If an error occurs (anticipated or not), the following will be executed.
    Call SendEmailNotification( _
        Recipient:="you@there.com", _
        Subject:="Something went wrong.", _
        Message:=Err.Number & vbCrLf & Err.Description & vbCrLf & Err.Source)
    ' Any other error handling goes here...
    Resume ExitProcedure
End Sub

Чтобы отправить электронное письмо, существуют различные решения.Поиск CDO, MAPI , Sockmail .Поиск по ним даст вам примеры того, как написать подпрограмму SendEmailNotification.Heads up: Ничто из этого не является прямым.

0 голосов
/ 28 марта 2011

Вы можете добавить функцию отправки почты в вашей обработке ошибок.Если на компьютере, на котором выполняется макрос, Outlook настроен правильно, я думаю, что вы можете использовать ActiveWorkbook.SendMail .

Если на этом компьютере не настроен Outlook, вам необходимонайдите решение для почты, подходящее для вашей среды.

Тогда оно будет выглядеть так:

Sub MySub()

    On Error GoTo ProcError

    'Your stuff


ProcExit:

    Exit Sub

ProcError:

    ActiveWorkbook.SendMail "your.mail@yourdomain.com", "Application failed!"
    Resume ProcExit

End Sub
...