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