Как найти/отфильтровать письма в outlook с помощью vba

Ответить
analitik
Сообщения: 5
Зарегистрирован: Вт фев 13, 2024 11:11 am

Как найти/отфильтровать письма в outlook с помощью vba

Сообщение analitik »

Dim oOutlook As Object
Dim oMailFolder ' папка в Outlook в которой нужно искать сообщение по теме
Dim subj As String 'тема письма
Dim olkMsg

Set oOutlook = GetObject(, "Outlook.Application")
If oOutlook Is Nothing Then
Exit Function
msgBox "Откройте Outlook"
End If

On Error Resume Next

Set oMailFolder = oOutlook.Session.Folder("Отправленные") ' задаем папку для поиска
If oMailFolder Is Nothing Then 'проверяем, что папка нашлась
msgBox "Папка в Outlook не найдена"
Set oOutlook = Nothing
Exit Function
End If

Переходим непосредственно к поиску письма. Возможны два варианта:
1. Если письмо имеет уникальную тему (subj), т.е. в папке только одно письмо с такой темой, то можно получить его так:
Set olkMsg = oMailFolder.Items(subj)
If olkMsg Is Nothing Then msgbox "Письмо не найдено!"

2. И второй способ, который найдет все письма с указанной темой (по факту отфильтрует их по теме и этот способ подходит и для первого случая, просто будет найдено только одно письмо.

Dim Filter as String
Dim mailItem
Filter = "[Subject] = ' & subj & '"
Set olkMsg = oSourceMailFolder.Restrict(Filter) ' здесь будут все найденные письма с указанной темой
If olkMsg Is Nothing Then msgbox "Письма не найдены!"

обработать каждое из них можно, перебрав в цикле:

For Each mailItem In olkMsg
'mailItem - отдельное письмо
next mailItem
Ответить