我正在研究在outlook邮件附件中找到字符串的宏。 我有工作模块搜索给定邮箱和文件夹上的主题,正文和附件名称。
问题是我的代码不想在附件功能中模仿Outlook搜索。
代码搜索单词' office'在邮件主题字段和显示找到邮件:
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
据我所知,#Filter'应该引用目标搜索字段,但当我将其值用于附件(0x0EA5001E)时,它会失败。
我也在尝试使用AdvancedSearch方法但结果相同 - 除了附件之外的其他所有工作。
答案 0 :(得分:0)
Outlook对象模型不提供用于搜索附件中的字符串的任何内容。您需要查找附加了文件的所有项目,然后迭代所有项目。在迭代时,您可以打开附件并在里面搜索字符串。您可以使用以下搜索条件查找包含附件的所有项目:
query ="@SQL=" & chr(34) & "urn:schemas:httpmail:hasattachment" & chr(34) & "=1"
您可能还会发现以下文章有用: