Как отфильтровать представление Outlook в VBA на основе адресов электронной почты «Кому» - PullRequest
1 голос
/ 30 апреля 2019

У меня есть представление в Outlook, которое включает в себя как письма «От», так и «Кому» из почтового ящика

Я могу очень легко ввести адрес электронной почты в поле поиска Outlook, и представление будет мгновенноотфильтрованный, чтобы показать все электронные письма на адрес электронной почты и с него (плюс, возможно, любые другие электронные письма, включая этот адрес электронной почты в теме или тексте, но это не проблема)

Я хотел бы повторить этот процесс через VBA -У меня есть БД Access с контактными данными, и я хотел бы иметь возможность просто отфильтровать это представление на основе адреса электронной почты контакта в БД.

Кажется, что это очень простая проблема, но я не могу найтирешение.У меня есть код, который, например, фильтрует на основе адреса электронной почты от, но, кажется, нет способа отфильтровать адрес электронной почты «Кому» (я могу отфильтровать отображаемое имя «Кому», но это практически бесполезно - оно отличается от одного электронного письмадругой, и редко, если вообще когда-либо содержит фактический адрес электронной почты)

У меня есть код фильтра DASL, который работает для фильтрации адресов электронной почты «От» с использованием синтаксиса DASL следующим образом:

Const SchemaFrom As String = "urn:schemas:httpmail:fromemail"
Dim EM as string
EM = "myemail@me.com"
objView.Filter = Chr(34) & SchemaFrom & Chr(34) & " = '" & EM & "'"

Но для писем «Кому» нет ничего похожего.

В конечном счете, мне даже не нужно фильтровать, например, по адресам электронной почты «От» и «Кому» - если есть способ закодировать это,поэтому, как и в окне поиска, он просто фильтрует любое текстовое поле, содержащее адрес электронной почты, который мне подойдет !!!

Например, есть ли общий поиск DASL, который будет это делать, поэтому нетнужно, например, диктовать поиск, например, в fromemail?

Вся помощь очень ценится - это так просто сделать в графическом интерфейсе Outlook, что это должно быть возможно из VBA наверняка?!

1 Ответ

0 голосов
/ 30 апреля 2019

Должно быть

Dim Filter As String
    Filter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:fromemail" & _
                       Chr(34) & " Like '%0m3r 0m3r%'"

Или используйте

Filter = "[SenderEmailAddress] = '0m3r@email.com'"

Пример

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 Поле для электронной почты | Документы Microsoft

https://stackoverflow.com/search?tab=votes&q=user%3a4539709%20%5boutlook-filter%5d

...