2014-06-20 35 views
0

我设法找到一个很好的小脚本,将电子邮件转发到外部地址,因为我们的交换服务器配置为不这样做。使用Outlook VBA转发电子邮件,但要排除约会

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) 
    Dim varEntryIDs 
    Dim objItem 
    Dim i As Integer 
    varEntryIDs = Split(EntryIDCollection, ",") 
    For i = 0 To UBound(varEntryIDs) 
     Set objItem = Application.Session.GetItemFromID(varEntryIDs(i)) 
     Set myItem = objItem.Forward 
     myItem.Recipients.Add "[email protected]" 
     myItem.Send 
    Next 
End Sub 

完美的作品。但现在...我只想做这个,如果他们是消息,而不是约会更新或请求。我不知道在哪里可以找到它,甚至不知道要找什么。我的VBA技能来自很久以前。

如果你看看screenshot,我想我有正确的方式MsgBox函数,但你可以验证?

感谢,

迈克

回答

0

只是条件逻辑的一点点,以确保你只用MailItem处理(因为objItem是变种/对象可以是其他AppointmentItem项目类型等):

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) 

    MsgBox "I'm working!", vbExclamation 

    Dim varEntryIDs 
    Dim objItem As Object 
    Dim myItem As MailItem 
    Dim i As Integer 
    varEntryIDs = Split(EntryIDCollection, ",") 
    For i = 0 To UBound(varEntryIDs) 
     Set objItem = Application.Session.GetItemFromID(varEntryIDs(i)) 

     '## Check the item's TypeName and ONLY process if it's a MailItem: 

     If TypeName(objItem) = "MailItem" Then 

      Set myItem = objItem.Forward 
      myItem.Recipients.Add "[email protected]" 
      myItem.Send 

     Else: 
      MsgBox "Type of item is: " & TypeName(objItem) 

     End If 

    Next 
End Sub 
+0

对不起,我知道这是愚蠢的,但现在它什么都不做。我复制并粘贴到那里。有什么方法可以测试并查看它是否在运行? – mdumka

+0

你不知道如何在代码中放置一个MessageBox提示来测试它是否工作?上面的修改将会A)告诉你它正在工作,并且B)消息框,如果接收到** MailItem以外的任何**类型,以便你可以看到什么进来... –

+0

@mdumka你能够让这个工作? –

1

您可以检查myItem.MessageClass财产(这将是 “IPM.Note的” 为常规消息)或myItem.Class财产 - 这将是43(olMail )。

相关问题