Якщо в головній папці «Вхідні» або «Надіслані» є підпапки, дуже корисною порадою є те, як рекурсивно та ефективно обходити їх за допомогою VBA. Цю важливу частину можна повторно використовувати в багатьох інших проектах VBA.
Критична проблема проходження папок
Корпоративні та комерційні користувачі Outlook часто мають сотні підпапок під головною папкою "Вхідні" або "Надіслані", з відповідними електронними листами в кожній з них. Коли виникає потреба переглянути всі ці папки, щоб виконати якусь дію з електронними листами, що містяться в них, написання різних сценаріїв VBA для різних папок стає кошмаром. Уявіть собі, що у вас є п'ятсот папок під головною папкою "Вхідні" та вимога до сценарію VBA для кожної з них. Користувачеві доведеться написати п'ятсот унікальних сценаріїв для кожної з цих папок з подібною функціональністю. Що ще гірше, якщо виникне потреба внести деякі зміни, всі п'ятьсот сценаріїв потрібно буде оновити. На щастя, існує методологія програмування, відома як рекурсія, яка вирішує нашу проблему дуже швидко. Ідея рекурсії полягає в тому, що функція неодноразово викликає себе та повторює той самий шаблон знову і знову, щоб обробити всі елементи з тією ж логікою. Нижче наведено приклад сценарію, який починається з головної папки "Вхідні" та перебирає всі підпапки та елементи в кожній з цих папок.
Сценарій Outlook VBA
Нижче наведено повний сценарій Outlook VBA:
Private Sub Main()
Dim objNameSpace As Outlook.NameSpace
Dim objMainFolder As Outlook.Folder
Set objNameSpace = Application.GetNamespace("MAPI")
Set objMainFolder = objNameSpace.GetDefaultFolder(olFolderInbox)
Call ProcessCurrentFolder(objMainFolder)
End Sub
Private Sub ProcessCurrentFolder(ByVal objParentFolder As Outlook.MAPIFolder)
Dim objCurFolder As Outlook.MAPIFolder
Dim objMail As Outlook.MailItem
On Error Resume Next
' Process each items in the folder
For Each objMail In objParentFolder.Items
' Do your task here ...
Next
' Process the subfolders in the folder recursively
If (objParentFolder.Folders.Count > 0) Then
For Each objCurFolder In objParentFolder.Folders
Call ProcessCurrentFolder(objCurFolder)
Next
End If
End Sub
Як запустити сценарій
Преса Alt + F11 Щоб відкрити редактор VBA Outlook, і вставте наведений вище код у «ThisOutlookSession». Важливо знати, що перед запуском цього скрипта до посилань на проекти з меню «Інструменти» слід додати бібліотеку об’єктів Microsoft Outlook XX, де XX – це версія бібліотеки.
Зрозумійте сценарій

Відновлення після катастрофи
Якщо ви зіткнулися з ситуацією збою або збоєм Outlook, не потрібно турбуватися про втрачені електронні листи, оскільки DataNumen поверне ваше життя в нормальне русло виправлення пошкоджень Outlook ефективним способом.
Вступ автора:
Мері Андервуд - експерт із відновлення даних у DataNumen, Inc., яка є світовим лідером у галузі технологій відновлення даних, в тому числі відновлення DWG та rar відновлення програмних продуктів. Для отримання додаткової інформації відвідайте WWW.datanumen.com