Если в основной папке «Входящие» или «Отправленные» есть подпапки, очень полезным советом будет то, как рекурсивно и эффективно перемещаться по ним с помощью VBA. Эту важную часть можно повторно использовать во многих других проектах VBA.
Критическая проблема обхода папок
Корпоративные и коммерческие пользователи Outlook часто имеют сотни подпапок в своей основной папке «Входящие» или «Отправленные», с соответствующими электронными письмами в каждой из них. Когда возникает необходимость просмотреть все эти папки, чтобы выполнить какие-либо действия с электронными письмами, содержащимися в них, становится кошмаром писать разные сценарии VBA для разных папок. Представьте, что у вас есть пятьсот папок под основной папкой «Входящие» и требование сценария VBA для каждой из них. Для каждой из этих папок пользователю придется написать пятьсот уникальных скриптов с аналогичным функционалом. Что еще хуже, если возникнет необходимость внести какие-либо изменения, все пятьсот скриптов потребуются для обновления. К счастью, существует методология программирования, известная как рекурсия, которая решает нашу проблему с легкостью. Идея рекурсии заключается в том, что функция многократно вызывает сама себя и повторяет один и тот же шаблон снова и снова, чтобы обработать все элементы с одной и той же логикой. Ниже приведен пример сценария, которыйtarts из основной папки «Входящие» и перебирает все подпапки и элементы в каждой из этих папок.
Скрипт 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
Как запустить скрипт
Press Alt + F11 чтобы открыть редактор Outlook VBA и вставить приведенный выше код в «ThisOutlookSession». Важно знать, что перед запуском этого скрипта Microsoft Outlook XX Object library следует добавить к ссылкам на проект из меню «Инструменты», где XX — это библиотекаrarу версия.
Понять сценарий

Восстановление после катастрофы
Если вы столкнулись с ситуацией сбоя или сбоя Outlook, вам не нужно беспокоиться об этом.ost электронные письма, как DataNumen вернет вашу жизнь в нормальное русло исправление повреждения Outlook эффективным способом.
Об авторе:
Мэри Андервуд — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая dwg проходили реабилитацию и rar программные продукты для восстановления. Для получения дополнительной информации посетите www.datanumen.com