我在 Outlook 中有一个视图,其中包含邮箱中的“发件人”和“收件人”电子邮件
我可以非常轻松地在 Outlook 搜索框中输入电子邮件地址,视图将立即被过滤以显示来自该电子邮件地址的所有电子邮件(也许还包括主题或正文中包含此电子邮件地址的任何其他电子邮件,但是这不是问题)
我想通过 VBA 复制此过程 - 我有一个包含联系人详细信息的 Access 数据库,并且希望能够根据数据库中的联系人电子邮件地址简单地过滤此视图。
这似乎是一个非常简单的问题,但我找不到解决方案。我有代码,例如根据发件人电子邮件地址进行过滤,但似乎无法过滤“收件人”电子邮件地址(我可以过滤“收件人”显示名称,但这几乎没有用 - 它与一封电子邮件不同发送给另一个人,并且很少包含实际的电子邮件地址)
我有一个 DASL 过滤器代码,可以使用 DASL 语法过滤“发件人”电子邮件地址,如下所示:
Const SchemaFrom As String = "urn:schemas:httpmail:fromemail"
Dim EM as string
EM = "[email protected]"
objView.Filter = Chr(34) & SchemaFrom & Chr(34) & " = '" & EM & "'"
但“收件人”电子邮件没有类似的内容。
最终,我什至不需要根据“发件人”和“收件人”电子邮件地址进行过滤 - 如果有一种方法可以对此进行编码,那么,就像在搜索框中一样,它只需过滤包含电子邮件的任何文本字段地址对我来说没问题!
例如,是否有通用的 DASL 搜索可以执行此操作,因此无需在 fromemail 中指定搜索?
非常感谢所有帮助 - 在 Outlook 的 GUI 中做到如此简单,肯定可以通过 VBA 实现吗?!
应该
Dim Filter As String
Filter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:fromemail" & _
Chr(34) & " Like '%0m3r 0m3r%'"
Or use
Filter = "[SenderEmailAddress] = '[email protected]'"
Example
Option Explicit
Private Sub Examples()
Dim olNs As Outlook.NameSpace
Dim Inbox As Outlook.MAPIFolder
Dim Item As Outlook.MailItem
Dim Items As Outlook.Items
Dim msg As String
Set olNs = Application.GetNamespace("MAPI")
Set Inbox = olNs.GetDefaultFolder(olFolderInbox)
Dim Filter As String
Filter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:fromemail" & _
Chr(34) & " Like '%0m3r 0m3r%'"
Set Items = Inbox.Items.Restrict(Filter)
msg = Items.Count & " Items in " & Inbox.Name
MsgBox (msg)
End Sub
MSDN fromemail 领域 |微软文档
Edit
为了.尝试
urn:schemas:httpmail:to
Or
urn:schemas:mailheader:to
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)