使用Outlook VBA转发电子邮件,但希望排除约会
我设法找到了一个很好的小脚本,可以将电子邮件转发到外部地址,因为我们的exchange服务器配置为不这样做使用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
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