如何过滤今天收到的Outlook邮件项目与Excel VBA中的其他邮件项目

时间:2015-07-27 12:39:37

标签: excel vba excel-vba email outlook

我是Excel宏(VBA)的新手。 我们有一个Excel宏应用程序,我试图过滤其他邮件项目今天收到的Outlook邮件项目。我试过Restrict方法。 这是现在的代码

Set Fldr1 = olNs.GetDefaultFolder(olFolderInbox).Folders.Item("Folder name")
olMiArr=Fldr1.Items.Restrict("DateValue[ReceivedTime]='DateValue(Now)'")

但它会在执行时抛出错误。对此的任何评论都非常感谢。

3 个答案:

答案 0 :(得分:0)

要确保日期格式为Microsoft Outlook所需,请使用格式化功能。例如:

Items.Restrict("DateValue[ReceivedTime]='" & Format(DateValue(Now),"ddddd h:nn AMPM") & "'")

还要注意Restrict方法将过滤器应用于Items集合,返回一个新集合,其中包含原始中与过滤器匹配的所有项目。

答案 1 :(得分:0)

首先,您的搜索条件包括内部字符串功能。

其次,你不应该在日期/时间属性中使用“=”:由于舍入错误,永远不会满足条件,总是使用范围。

在你的情况下

olMiArr=Fldr1.Items.Restrict("[ReceivedTime] >= '" & DateValue(Now) & "' AND [ReceivedTime] < '" & DateValue(Now+1) & "'")

答案 2 :(得分:0)

还有另一种解决方案。搜索Outlook项目(无论是邮件项目,任务项目)时,请使用DASL语法。它看起来更复杂,实际上并非如此。

有一个名为Outlook Spy(http://www.dimastr.com/outspy/home.htm)的Outlook加载项,它为您提供DASL字符串。您可以选择要搜索其字段的项目,并获取项目内任何字段的“DASL”公式(常规字段或自定义字段)。

  

下面的用法示例,其中读取搜索关键字内的变量   (注意DASL字符串是随机的,它只是为了   描述,你必须在自己的Outlook项目上生成它):

     

像这样设置过滤后的项目的集合。并在其中循环。

myFilter="@SQL=""http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/somefieldname/0x0000001F""='" & strEnterInput & "'"

Set objSourceItemsRestrict = objSourceItems.Restrict(myFilter)
For Each objSourceTask In objSourceItemsRestrict
'do something
Next