自动转发宏Outlook 2010 VBA不会在Outlook上启动“正在更新文件夹”

时间:2015-02-17 14:07:56

标签: outlook-vba outlook-2010 autostart

Windows 7,Outlook 2010 Exchange。

我有一个用于传入电子邮件的自动转发宏,可以将所有传入的电子邮件项目转发到我需要进行整合的外部帐户。

唯一的问题是每次我冷启动和启动Outlook时,显示在通常"更新此文件夹后出现的项目......"在自动收报机中不要自动转发。从那时起,宏开始再次完美运作。

它位于ThisOutlookSession。

在以前的Outlook版本中,运行类似宏的规则总是在启动时触发。

感谢您的帮助。

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

        If TypeOf objItem Is MailItem Then                     

            Set myItem = objItem.Forward
            myItem.Recipients.Add "bcc.hwb@gmail.com"

            myItem.DeleteAfterSubmit = True                    
            myItem.Send
            Set myItem = Nothing
        Else
            Debug.Print "Skipping " & TypeName(objItem)
            Set myItem = Nothing
        End If
    Next
End Sub

1 个答案:

答案 0 :(得分:0)

尝试设置一个调用宏子而不是处理NewMailEx事件的规则。

如果您在非缓存模式下运行Exchange,只有在新电子邮件到达时Outlook正在运行,事件才会触发。如果您关闭并重新打开Outlook,队列中等待传递的所有电子邮件都将显示在Outlook中,但事件不会触发。这是Outlook中的一个众所周知的问题。

您可以在Outlook NewMail event unleashed: the challenge (NewMail, NewMailEx, ItemAdd)文章中了解处理传入电子邮件的所有可能方法。