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会自动打印所有带有附件的传入电子邮件,但很少有同事的电子邮件。

如果我停止该规则,则宏将无法单独工作(假设它应该出现代码错误?),但是如果启用了该规则,则带有附件的每封电子邮件将被打印两次。

每页一个,仅第一页一个。有什么办法可以解决此问题?请提供协助,并在此先感谢!

最佳答案

Items.Restrict Method (Outlook)一起使用以排除发件人名称。由Filtering Items



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 Rule


Items.Restrict method是使用Find方法或FindNext方法迭代集合中特定项目的替代方法。如果项目数量很少,则Find或FindNext方法比筛选更快。如果集合中有大量项目,则Restrict方法的速度会大大提高,尤其是在预期只能在大型集合中找到少量项目的情况下。





DASL筛选器支持的Filtering Items Using a String Comparison包括等价,前缀,短语和子字符串匹配。请注意,当您对Subject属性进行过滤时,诸如“ RE:”和“ FW:”之类的前缀将被忽略。

10-04 22:11
查看更多