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 RuleItems.Restrict method是使用Find方法或FindNext方法迭代集合中特定项目的替代方法。如果项目数量很少,则Find或FindNext方法比筛选更快。如果集合中有大量项目,则Restrict方法的速度会大大提高,尤其是在预期只能在大型集合中找到少量项目的情况下。
DASL筛选器支持的Filtering Items Using a String Comparison包括等价,前缀,短语和子字符串匹配。请注意,当您对Subject属性进行过滤时,诸如“ RE:”和“ FW:”之类的前缀将被忽略。