Excel vba поиск вложений

Я работаю над макросом, который нашел бы строку в почтовых вложениях outlook. У меня есть рабочий модуль для поиска по названию темы, тела и вложений в заданном почтовом ящике и папке.

Проблема в том, что мой код не хочет эмулировать внешний вид поиска в функции вложения.

Код ищет слово "офис" в поле темы письма и отображает найденные письма:

Sub t22()

Dim myolApp As Outlook.Application
Dim objNS As Outlook.Namespace
Dim objFolder As Outlook.MAPIFolder
Dim ProcessName As String
Dim EmailName As String

Set myolApp = CreateObject("Outlook.Application")
Set objNS = myolApp.GetNamespace("MAPI")
Set objFolder = objNS.Folders("my@mailbox.com")
Set TargetInbox = objFolder.Folders("Inbox")

Dim oItms As Outlook.Items
Dim oItm As Outlook.MailItem
Set oItms = TargetInbox.Items
Dim sFilter As String
Dim EmailTime As String

sFilter = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" = 'office'"
Set oItm = oItms.Find(sFilter)
'If Not IsEmpty(oltm) Then
    oItm.Display
    Debug.Print oItm.Body
'End If
End Sub

Насколько я понимаю, 'sFilter' должен ссылаться на целевые поля поиска, но когда я использую его значение для вложений (0x0EA5001E), он терпит неудачу.

Я также пробовал метод AdvancedSearch, но с тем же результатом - работал для всего, кроме вложений.

1 ответ

Объектная модель Outlook не предоставляет ничего для поиска строки во вложениях. Вам нужно найти все элементы, к которым прикреплены файлы, а затем выполнить итерацию по всем из них. Во время итерации вы можете открыть прикрепленный файл и найти строку внутри. Вы можете использовать следующие критерии поиска, чтобы найти все элементы, которые имеют вложения:

 query ="@SQL=" & chr(34) & "urn:schemas:httpmail:hasattachment" & chr(34) & "=1"

Вы также можете найти следующие статьи полезными:

Другие вопросы по тегам