使用AdvancedSearchMethod查找带有dav查询的附件

时间:2015-07-27 18:43:06

标签: vba filter outlook-vba advanced-search dav

我正在尝试使用高级搜索方法来过滤大量电子邮件。我正在寻找最终创建一个过滤器,如:

filter = "(urn:schemas:mailheader:subject like '%project%' or " _ 
& "urn:schemas:httpmail:textdescription like '%project%') and " _
& "urn:schemas:mailheader:date > 'now - 1:00:00' and " _
& "urn:schemas:httpmail:hasattachment > 0 and " _
**& "urn:schemas:httpmail:attachmentfilename like '%tonnage%'"** 

问题是附件的文件名部分(以粗体显示的行)不起作用。我相信这是因为它正在寻找像olmailitem这样的东西而不是那个对象的附件。无论如何,我需要一个简单的过滤器来查看附件工作,然后我可以扩展它。这就是我到目前为止所做的:

scope = "'Fakeexample123@outlook.com'"

'this is a dumbed down version of my filter,
'but I want it to search for 3 instances of '%attachment%':
    'attachment
    'Attachment
    'ATTACHMENT
    'for any .xls, .xlsm, or .xlsx files

    'I was thinking something like:
    'filter = "ucase(urn:schemas:httpmail:attachmentfilename) like '%ATTACHMENT%xls%'"
    'but I don't believe that works... ideas?

    filter = "urn:schemas:httpmail:hasattachment > 0 and " _ 
'***************** This is the line that is giving me trouble *****************
    "urn:schemas:httpmail:attachmentfilename like '%attachment%xls%'"
'***************** End trouble *****************
    Set AdvancedSearch = myOlApp.AdvancedSearch(scope, filter, True, "test")

如果您有任何想法,请告诉我。

谢谢你们! =)

1 个答案:

答案 0 :(得分:0)

您需要先找到带附件的项目,例如,您可以使用以下条件:

  "urn:schemas:httpmail:hasattachment" = 1

请注意,应使用SQL语法使其在Outlook中正常运行。

  filter = "@SQL=""urn:schemas:httpmail:hasattachment"" = 1"