使用Outlook VBA转发电子邮件,但希望排除约会

使用Outlook VBA转发电子邮件,但希望排除约会,vba,email,outlook,Vba,Email,Outlook,我设法找到了一个很好的小脚本,可以将电子邮件转发到外部地址,因为我们的exchange服务器配置为不这样做 Private Sub Application_NewMailEx(ByVal EntryIDCollection As String) Dim varEntryIDs Dim objItem Dim i As Integer varEntryIDs = Split(EntryIDCollection, ",") For i = 0 To UBoun

我设法找到了一个很好的小脚本,可以将电子邮件转发到外部地址,因为我们的exchange服务器配置为不这样做

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 "mike.dumka@outlook.com"
        myItem.Send
    Next
End Sub
工作完美。但是现在。。。我只想这样做,如果他们是消息,而不是约会更新或请求。我不知道在哪里可以找到这个,甚至不知道该找什么。我的VBA技能来自很久以前

如果你看一下,我想我的MsgBox函数是正确的,但是你能验证一下吗

谢谢


Mike

您可以检查myItem.MessageClass属性(对于常规消息,它将是“IPM.Note”)或myItem.Class属性-它将是43(olMail)。

只需一点条件逻辑,以确保您只处理
MailItem
(由于
objItem
是变体/对象,可能是另一种类型的项目,如
AppointmentItem
等):


抱歉,我知道这是愚蠢的,但现在它什么也不做。我复制并粘贴了原来的内容。有没有办法测试并查看它是否正在运行?您不知道如何在代码中放置MessageBox提示符来测试它是否正常工作?上面的修订将是a)向您显示它正在工作,并且B)如果收到了除
MailItem
以外的任何类型的邮件,则显示消息框,以便您可以看到将要出现的内容…抱歉,我的回复已被删除,因为它是一个答复,而不是一条评论。我需要附上一个屏幕截图,告诉你为什么它不起作用。但这里有一个指向VBA代码的链接。但它仍然不起作用。第一个消息框看起来正常。那么,当Outlook打开时,您是否看到过该消息框?您永远不会相信这一点,但安全性正在从所有方面停止。进行了一些挖掘,更改了设置,重新启动了outlook,然后爆炸了。太感谢你了!
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 "mike.dumka@outlook.com"
            myItem.Send

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

        End If

    Next
End Sub