如何从Items_ItemAdd事件过滤项目sendername?

时间:2017-04-07 03:02:14

标签: vba outlook outlook-vba outlook-filter

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 个答案:

答案 0 :(得分:3)

使用 Items.Restrict Method (Outlook) 排除发件人姓名。通过 Filtering Items

实施例

<!DOCTYPE html>
<html>

<head>
  <style>
    ul {
      list-style-type: none;
      margin: 0;
      padding: 0;
      overflow: hidden;
      background-color: #35B1C2;
      min-height: 50px;
    }
    
    li {
      float: left;
    }
    
    li a {
      display: block;
      color: white;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
    }
    
    li :hover {
      background-color: #2F9EBD;
      height: 60px;
      transition: all 1s;
    }
    
    ul:hover {
      overflow: visible;
    }
    
    li {
      border-right: 1px solid #bbb;
      transition: all 1s;
    }
    
    li:last-child {
      border-right: none;
    }
  </style>

</head>

<body>
  <ul>
    <li><a href="index.html">Home</a></li>
    <li><a href="aboutme.html">About Me</a></li>
    <li><a href="projects.html">Projects</a></li>
  </ul>

</body>

</html>

确保使用正确的名称更新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 ,现在您不需要Outlook规则

  

Items.Restrict method是使用Find方法或FindNext方法迭代集合中特定项目的替代方法。如果存在少量项目,则Find或FindNext方法比过滤更快。如果集合中有大量项目,则Restrict方法会明显加快,特别是如果预计只能找到大集合中的少数项目。

  DASL过滤器支持的

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