Как запустить макрос для запуска после получения новой почты в Outlook?
Я пишу макрос, который создает билеты в базе данных на основе предупреждений, полученных с сервера Nagios в виде электронной почты. Тем не менее, я не могу позволить макросу работать в бесконечном цикле, проверяя почту, потому что это слишком тяжелый ресурс и заставляет мой рабочий стол зависать. Мне нужно найти способ запуска макроса только при получении новой почты.
Я искал что-то в соответствии с событиями NewMail на веб-сайте MSDN, но я не могу найти ничего согласованного. Может ли кто-нибудь показать мне только пример кода, чтобы показать, как запускать макросы из новых почтовых явлений?
Ответы
Ответ 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
, когда было получено электронное письмо.