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"
Вы также можете найти следующие статьи полезными: