Как я могу применить событие ItemChange к каждой папке в коллекции? - PullRequest
2 голосов
/ 14 января 2020

У меня есть следующий (псевдо) код для создания обработчика событий для определенной папки c:

Private myFolder As Outlook.Folder
Private WithEvents myItems As Outlook.Items

Set myItems = myFolder.Items

Private Sub myItems.ItemChange( ... )

Это отлично подходит для обнаружения изменений только в «myFolder». Но предположим, что у меня есть другая папка «myFolders», которая сама содержит много папок, и я хотел бы обнаружить изменения элементов в любой из этих папок, ie. в каждом члене myFolders.Folders. Возможно ли это?

1 Ответ

0 голосов
/ 16 января 2020

Вы можете иметь более одного WithEvents. Например:

Private WithEvents InboxOneItems As Items
Private WithEvents InboxTwoItems As Items

Private Sub Application_Startup()
  Set InboxOneItems = Session.Folders("JohnDoe@Isp1.com").Folders("Inbox").Items
  Set InboxTwoItems = Session.Folders("DoeJohn@Isp2.com").Folders("Inbox").Items
End Sub

Private Sub InboxOneItems_ItemAdd(ByVal Item As Object)
  Call ItemAdd("One", Item)
End Sub

Private Sub InboxTwoItems_ItemAdd(ByVal Item As Object)
  Call ItemAdd("Two", Item)
End Sub

Sub ItemAdd(ByVal IdInbox As String, ByVal Item As Object)
  ' Code to process new emails from either mailbox
End If

У меня есть два адреса электронной почты. Мастер Outlook создал отдельное хранилище и папку «Входящие» для каждого адреса. Приведенный выше код позволяет мне контролировать оба почтовых ящика и передавать почтовые элементы, поступающие в любой почтовый ящик, в одну подпрограмму для обработки.

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

Вы надеялись на что-то более динамичное c? Хотите иметь возможность добавить новую дочернюю или внучатую папку в MyFolder и Outlook сразу же начнет ее мониторинг. Если такая функциональность существует, я надеюсь, что кто-то объяснит, как ее использовать, потому что я считаю ее полезной.

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