使用 VBA 在 Outlook 中过滤具有某些类别的邮件时遇到问题

Posted

技术标签:

【中文标题】使用 VBA 在 Outlook 中过滤具有某些类别的邮件时遇到问题【英文标题】:Having Trouble filtering mails in Outlook with certain Categories with VBA 【发布时间】:2022-01-10 06:52:52 【问题描述】:

我在收件箱中有数百封邮件,它们可以有多个类别(“AA”、“BB”、“CC”、“DD”等)的任意组合,可以按任意顺序分配。 我想选择仅使用.Items.Restrict 的邮件来过滤具有“AA”而不具有“BB”的邮件,无论是否设置了其他类别。我试图避免循环所有邮件来检查.categories 文本字符串,这是一种可行的方法,但速度很慢。 我尝试过这样的事情,但没有运气:

    sFilter = "[Categories] = 'AA' And Not([Categories] = 'BB')"
    Set oOlResults = oOlInb.Items.Restrict(sFilter)

这可能吗?任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

不包括类别 BB 的所有可能组合。

sfilter = "[Categories] = 'AA' OR [Categories] = 'AA, CC' OR [Categories] = 'CC, AA'"

【讨论】:

谢谢尼顿。我明白你的想法!但是我不得不编辑我的原始帖子,因为我意识到我使用一个只有 3 个类别的示例简化了太多,你可以巧妙地解决。实际上,有几十个类别在使用。抱歉不够清楚。我的错!!!!【参考方案2】:

试图帮助有同样问题的人,我将发布我刚刚发现的内容:这可以使用 DASL 过滤字符串来解决。对于这个例子:

sFilter = "@SQL=""urn:schemas-microsoft-com:office:office#Keywords"" like 'AA' AND NOT (""urn:schemas-microsoft-com:office:office#Keywords"" like 'BB')"

【讨论】:

以上是关于使用 VBA 在 Outlook 中过滤具有某些类别的邮件时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

VBA 使用多标准从 Outlook 下载电子邮件附件

Outlook VBA 代码仅适用于一台计算机

For Each 循环:循环通过 Outlook 邮箱删除项目时,某些项目会被跳过

有时在 Outlook VBA 中获取“对象变量或未设置块变量”

[转]Outlook VBA自动处理邮件

通过Outlook上的适当帐户发送VBA生成的个性化电子邮件