У меня та же проблема и вопрос, что и у этого вопроса 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