使用 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 中过滤具有某些类别的邮件时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
For Each 循环:循环通过 Outlook 邮箱删除项目时,某些项目会被跳过