Outlook触发器随机停止工作

时间:2015-04-30 15:39:29

标签: vba triggers ms-office outlook-vba

上午我们收到了一封包含今日定价的自动电子邮件。我在Outlook会话中设置了一个触发器,用于检查每个新电子邮件,如果有主题,则启动脚本。问题是,这个触发器有时只能起作用。我让机器一直运行并且外观打开,但我发现触发器在一段时间后停止工作。通常我只需重新启动outlook - 有时我只需要修改并重新保存代码。

有什么我可以改变以使这个触发更可靠吗?

注意:我无权访问任务计划程序。

更新:我开始收到以下警告:

  

文件C:\ Users \ me \ AppData \ Local \ Microsoft \ Outlook \ Me@host.com.ost   正在使用中,无法访问。关闭正在使用的任何应用程序   此文件然后再试一次。您可能需要重新启动计算机。

点击OK不会中断脚本的运行 - 但它是否暂停了前进的触发器?

这是脚本:

'Placed in Microsoft Outlook Objects > ThisOutlookSession

Private WithEvents olInboxItems As Items

Private Sub Application_Startup()
    Set olInboxItems = Session.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub olInboxItems_ItemAdd(ByVal Item As Object)
    If TypeOf Item Is mailItem Then
        Call handleMessage(Item.EntryID)
    End If
End Sub

Public Function handleMessage(strMailItemID As String)
    ' This function takes an email ID and determines whether it's our pricing sheet email.

    Dim mailItem As Outlook.mailItem
    Dim path As String, targetSubj As String
    Dim result As Boolean
    result = False
    targetSubj = "Today's Pricing"
    Set mailItem = Application.Session.GetItemFromID(strMailItemID)

    Debug.Print (mailItem.Subject) 'I use this to test if my script is working
                                   'I find that it logs the subject and then simply cuts off. 

    If (Mid(mailItem.Subject, 1, Len(targetSubj)) = targetSubj) Then
        Debug.Print ("Grabbed Target " & Date)
        path = "C:\pathToPricing\Pricing.xls"
        mailItem.Attachments.Item(1).SaveAsFile path
        Call runExcelMacro("C:\pathToPricing\pricingAuto.xlsm", "processPricing")
        result = True

    End If

    handleMessage = result
End Function

1 个答案:

答案 0 :(得分:0)

当一次将大量项目添加到文件夹(大于16)时,不会触发ItemAdd事件 - 这是Outlook中的已知问题。

相反,您可以考虑在Outlook中创建规则,然后分配要运行的VBA宏子。它应该如下所示:

{{1}}

另一种解决方案是使用计时器检查新电子邮件。

您也可以找到以下系列文章: