Как отфильтровать элементы sendername из Items_ItemAdd Events?

Private WithEvents Items As Outlook.Items

Private Sub Application_Startup()
  Dim Ns As Outlook.NameSpace
  Dim Folder As Outlook.MAPIFolder

  Set Ns = Application.GetNamespace("MAPI")
  Set Folder = Ns.GetDefaultFolder(olFolderInbox)
  Set Items = Folder.Items
End Sub

Private Sub Items_ItemAdd(ByVal Item As Object)
  If TypeOf Item Is Outlook.MailItem Then
    Printattachments Item
  End If
End Sub

Я сделал правило, чтобы outlook автоматически печатал любое входящее письмо с вложением, за исключением нескольких писем коллег.

Если я остановлю правило, макрос не будет работать сам по себе (предположим, что так и должно быть, ошибка кода?), Но если правило включено, каждое письмо с вложением будет напечатано дважды.

один с каждой страницей и один только с первой страницей. Есть ли способ обойти это? Пожалуйста, помогите и спасибо заранее!

1 ответ

Решение

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

пример

Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
    Dim olNs As Outlook.NameSpace
    Dim Inbox  As Outlook.MAPIFolder
    Dim Filter As String

    Filter = "@SQL=" & " Not (urn:schemas:httpmail:fromname" & _
                       " Like '%Ming Lian%' Or " & _
                             "urn:schemas:httpmail:fromname" & _
                       " Like '%0m3r 0mr%')"


    Set olNs = Application.GetNamespace("MAPI")
    Set Inbox = olNs.GetDefaultFolder(olFolderInbox)
    Set Items = Inbox.Items.Restrict(Filter)

End Sub

Обязательно обновите %Ming Lian% с правильным именем и теперь вам не нужно правило Outlook

Метод Items.Restrict является альтернативой использованию метода Find или метода FindNext для перебора определенных элементов в коллекции. Методы Find или FindNext работают быстрее, чем фильтрация, если имеется небольшое количество элементов. Метод Restrict значительно быстрее, если в коллекции имеется большое количество элементов, особенно если ожидается, что в большой коллекции будет найдено только несколько элементов.


Фильтрация элементов с использованием сравнения строк, поддерживаемого фильтрами DASL, включает эквивалентность, префикс, фразу и сопоставление подстроки. Обратите внимание, что при фильтрации по свойству Subject префиксы, такие как "RE: " и "FW: ", игнорируются.

Другие вопросы по тегам