Подтвердить что ты не робот

Как запустить макрос для запуска после получения новой почты в Outlook?

Я пишу макрос, который создает билеты в базе данных на основе предупреждений, полученных с сервера Nagios в виде электронной почты. Тем не менее, я не могу позволить макросу работать в бесконечном цикле, проверяя почту, потому что это слишком тяжелый ресурс и заставляет мой рабочий стол зависать. Мне нужно найти способ запуска макроса только при получении новой почты.

Я искал что-то в соответствии с событиями NewMail на веб-сайте MSDN, но я не могу найти ничего согласованного. Может ли кто-нибудь показать мне только пример кода, чтобы показать, как запускать макросы из новых почтовых явлений?

4b9b3361

Ответ 1

Этот код добавит прослушиватель событий к локальной папке "Входящие" по умолчанию, а затем предпримет некоторые действия для входящих писем. Вы должны добавить это действие в код ниже.

Private WithEvents Items As Outlook.Items 
Private Sub Application_Startup() 
  Dim olApp As Outlook.Application 
  Dim objNS As Outlook.NameSpace 
  Set olApp = Outlook.Application 
  Set objNS = olApp.GetNamespace("MAPI") 
  ' default local Inbox
  Set Items = objNS.GetDefaultFolder(olFolderInbox).Items 
End Sub
Private Sub Items_ItemAdd(ByVal item As Object) 

  On Error Goto ErrorHandler 
  Dim Msg As Outlook.MailItem 
  If TypeName(item) = "MailItem" Then
    Set Msg = item 
    ' ******************
    ' do something here
    ' ******************
  End If
ProgramExit: 
  Exit Sub
ErrorHandler: 
  MsgBox Err.Number & " - " & Err.Description 
  Resume ProgramExit 
End Sub

После вставки кода в модуль ThisOutlookSession необходимо перезапустить Outlook.

Ответ 2

Попробуйте что-то вроде этого внутри ThisOutlookSession:

Private Sub Application_NewMail()
    Call Your_main_macro
End Sub

Мой прогноз vba только что был запущен, когда я получил электронное письмо и открыл это приложение.

Изменить: я только что проверил зелёный мир msg box, и он запускался после вызова в событии application_newmail, когда было получено электронное письмо.