Excel vba Items.restrict 2 条件
Posted
技术标签:
【中文标题】Excel vba Items.restrict 2 条件【英文标题】:Excel vba Items.restrict 2 conditions 【发布时间】:2017-07-27 16:41:51 【问题描述】:我需要有关如何将其置于限制语法中的帮助。原来的限制作品:
Set myTasks = Fldr.Items.Restrict("[ReceivedTime]>'" & Format(Date - daysAgo, "DDDDD HH:NN") & "'")
现在我被告知可以将 2 个过滤器放在一个限制中,所以我尝试了:
Set myTasks = Fldr.Items.Restrict("[ReceivedTime]>'" & Format(Date - daysAgo, "DDDDD HH:NN") & "' And Not [Subject] like '%Undeliverable%'")
我尝试了上面的代码,但收到错误“条件无效”。基本上,条件 1 根据单独工作的接收日期过滤电子邮件。我需要的第二个条件是确保循环将忽略主题行中包含“无法投递”的电子邮件。请帮助如何输入正确的语法。
【问题讨论】:
没有深入挖掘这个,你有没有先尝试过无法投递,然后在那些被淘汰后排序? 嗨,其实我没有。共享邮箱每天接收数千封电子邮件,因此接收时间对于缩小范围非常重要。我认为问题在于我需要帮助的 And Not 的语法。老实说,这对我来说是一场限制语法的斗争。 我只是在查看Restrict
的文档,发现:没有办法执行“包含”操作。例如,您不能使用“查找”或“限制”来搜索主题字段中包含特定单词的项目。相反,您可以使用 AdvancedSearch 方法,或者您可以遍历文件夹中的所有项目并使用 InStr 函数在字段中执行搜索。您可以使用 Restrict 方法搜索以特定字符范围开头的项目。 msdn.microsoft.com/en-us/library/office/ff869597.aspx
好的,那么我如何将字符串值包含到 InStr 中? if (InStr(1, olmail.subject, "undeliverable", vbtextcompare) > 0 then?
在最后一条评论之后,我在 SO:***.com/questions/21549938/vba-search-in-outlook 上找到了这个。将'%sketch%'
更改为'%Undeliverable%'
,它起作用了....添加了日期条件,我得到了Condition is not valid
。去图吧。
【参考方案1】:
回答你提出的问题,而不是你想回答的问题。
可以一个接一个地应用两个限制,但两者都必须起作用。在这种情况下,可能无法使用“非主题”过滤器。
如果可能的话,您可以首先过滤文件夹中的项目,使用此过滤器的非版本 "@SQL=" & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & "like '%Undeliverable%'" 如 cmets 中所述。 https://***.com/a/27350173/1571407
Set myTasks = Fldr.Items.Restrict(Not .... '%Undeliverable%'")
其次,过滤 Mytasks,而不是 Fldr:
Set myTasks = myTasks.Restrict("[ReceivedTime]>'" & Format(Date - daysAgo, "DDDDD HH:NN") & "'")
【讨论】:
好的,正如我提到的,SQL 过滤器语法是一个挑战。所以你能告诉我那个过滤器的非版本吗?还是我只是将 Like 改为 Not 作为运营商? 我尝试将 Like 更改为 Not 并得到一个解析错误。 not 版本很可能会解决这个问题。请指教。谢谢。 等待您的回复。我所做的是设置 2 mytasks 一个仅搜索 Undeliverable 并将它们标记为“undeliverable”,如果它在第一个循环之后包含 undeliverable 和 mytasks2 而没有 undeliverable 条件。看起来它有效。但可能会很慢,因为我最终做了 2 个循环。如果我们可以将 strfilter 转换为 NOT 语句,那将非常有帮助。 谁能帮忙把这句话改成NOT? strfilter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%undeliverable%'"以上是关于Excel vba Items.restrict 2 条件的主要内容,如果未能解决你的问题,请参考以下文章
oContacts.Items.Restrict 遗漏一些联系人
Outlook .items.restrict 使用两个过滤器