Outlook VBA: динамически реализовать ItemChange в папках «Входящие» и подпапках - PullRequest
0 голосов
/ 01 марта 2019

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

По сути, цель состоит в том, чтобы прослушать все ItemChange во всех папках - Входящие и подпапки без явного объявления переменной для каждой папки и элементов.

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

Option Explicit

Private WithEvents FolderItems As Outlook.items
Private WithEvents aaFolder As Outlook.Folder
Private WithEvents aaFolderItems As Outlook.items
Private aaItemsCollection(0 To 2) As Outlook.items
Private aaFolderCollection(0 To 2) As Outlook.Folder


Private data() As String

'Main entry point
Private Sub Application_Startup()

Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")

data = Split("Q1,Q2,Q3", ",") 'hardcoded for testing, will be replaced with for loop to inbox subfolders
Dim index As Integer
For index = 0 To 2
    Set aaFolder = objNS.GetDefaultFolder(olFolderInbox).folders(data(index))
    Set aaFolderCollection(index) = aaFolder
    Set aaFolderItems = aaFolder.items
    Set aaItemsCollection(index) = aaFolderItems
Next
End Sub

Private Sub aaFolderItems_ItemChange(ByVal item As Object)
    Debug.Print "FolderItems_ItemChange(" & item.Subject & ")"
End Sub
...