MyTetra Share
Делитесь знаниями!
Как создать свое правило в VBA для Microsoft Outlook? Событие ItemAdd для папки Входящие
Время создания: 16.03.2019 23:43
Текстовые метки: VB_Outlook, rules
Раздел: !Закладки - VBA - Outlook
Запись: xintrea/mytetra_db_adgaver_new/master/base/1524471916wurloijpm0/text.html на raw.githubusercontent.com

Как создать свое правило в VBA для Microsoft Outlook? Событие ItemAdd для папки Входящие

написано в рубрике: Microsoft Outlook — Outlook Blogger @ Пт 18.08.2006 16:00


Одним из огромных преимуществ Microsoft Outlook перед другими почтовиками несомненно является наличие встроенного VBA for Application. Т.е. простого интерпретатора языка VBScript, с помощью которого можно обращаться к объектной модели Microsoft Outlook и творить с ним многое, если не всё. Если Вы немного владеете Бейсиком, то Вам будет вполне по силам написать свой обработчик для правил сортировки, значимость которых трудно переоценить.

 

Итак, создаем свое собственное правило на VBScript которое пересылает на определенный адрес письма, попадающие в папку Входящие до 9 утра и после 5 вечера. Заходим в меню Сервис/Макрос/Редактор Visual Basic и выбираем Проект1/Microsoft Office Outlook Objects/ThisOutlookSession:


Далее вставляем в область кода следующую программу:

Public WithEvents myOlItems As Outlook.Items

Public Sub Application_Startup()

' Reference the items in the Inbox. Because myOlItems is declared

' "WithEvents" the ItemAdd event will fire below.

Set myOlItems = Outlook.Session.GetDefaultFolder(olFolderInbox).Items

End Sub

Private Sub myOlItems_ItemAdd(ByVal Item As Object)

' If it's currently not between 9:00 A.M. and 5:00 P.M.

If Time() < #9:00:00 AM# Or Time() > #5:00:00 PM# Then

' Check to make sure it is an Outlook mail message, otherwise

' subsequent code will probably fail depending on what type

' of item it is.

If TypeName(Item) = "MailItem" Then

' Forward the item just received

Set myForward = Item.Forward

' Address the message

myForward.Recipients.Add "support(ат)positic.ru"

' Send it

myForward.Send

End If

End If

End Sub


Если требуется, то в скрипте можно легко поменять временной промежуток работы правила, а также почтовый адрес для пересылки.

Для работы VBA кода проверьте, что макросы разрешены для выполнения в меню Сервис/Макрос/Безопасность. Если же редактор VBA совсем не открывается, то стоит проверить соответствующую надстройку VBA for Application в меню Сервис/Параметры/Дополнительно/Дополнительно/COM Надстройки.

Наше правило может конфликтовать с уже существующими стандартными правилами. К примеру если используется учетная запись сервера Exchange и настроено перемещение сообщений на стороне сервера, то наше правило может не сработать.

Событие ItemAdd работает не только при получении почты, но и при простом перетаскивании сообщения в папку. Поэтому если Вы поздно ночью перенесете письмо в папку Входящие, то выполнится наше правило и письмо перешлется. Также существует событие NewMail, находящееся в объекте Application, которое вызывается только после прихода новой почты. Причем вызывается оно только один раз, даже если пришло несколько писем, поэтому требуется дополнительная логика для их нахождения в папке Входящие.

Описанным выше образом можно выполнять произвольные действия для любой папки, пользуясь только стандартной функциональностью Microsoft Outlook. В следующих постах читайте как создать обработчик стандартного правила Outlook на VBA.

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования