首页 > 解决方案 > 发生错误事件时,停止 Outlook VBA 在 ItemSend() 中发送邮件

问题描述

如果在 ItemSend() 事件中的运行时发生错误,则会发送 Outlook mailitem。放入Cancel = True代码甚至不能阻止这种情况的发生。它是固有的 VBA 缺陷吗?

我将如何解决这个问题?欢迎任何想法。

Public WithEvents myApp As Outlook.Application

Sub Initialize_handler()
    Set myApp = Application
End Sub

Private Sub myApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
On Error GoTo ErrorHandler_myApp_ItemSend
    Cancel = True

    ' Do something erroneous

    Exit Sub

ErrorHandler_myApp_ItemSend:
    Cancel = True
    MsgBox "Error: " Err.Description
    Err.Clear
End Sub

标签: vbaeventsoutlookonerror

解决方案


我没有解释为什么关闭检查员时没有发送邮件。

Option Explicit

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    Dim objInsp As Inspector

    On Error GoTo ErrorHandler_Application_ItemSend

    ' Do something erroneous
    Err.Raise 1

    Exit Sub

ErrorHandler_Application_ItemSend:

    Cancel = True
    MsgBox "Error: " & Err.Description

    Set objInsp = Item.GetInspector

    ' Look for the mail in the drafts folder
    objInsp.Close olSave

End Sub

推荐阅读