首页 > 解决方案 > 检测何时按下 SEND 按钮

问题描述

据我所知,在 Outlook 中发送邮件有两种方法:

  1. 通过物理按下 Inspector 窗口中的 SEND 按钮,或

  2. MailItem.Send通过宏命令执行

如何使用 Outlook VBA 区分这些?

具体来说,如何检测何时按下 SEND 按钮?

可以ItemSend()修改为仅捕获此事件,而不捕获其他事件吗?

标签: vbabuttonoutlooksend

解决方案


我不完全确定是否有一种方法可以检测到该项目的发送方法 - 但是,至少仍然有一种解决方法可以为您带来相同的效果。这将要求您在模块顶部创建一个布尔变量,在本例中我们使用isVBA.

在事件处理程序中,您将添加一个If Not isVBA语句 - 这将是您通过物理按下按钮手动发送项目的True任何时候。

但是,在使用该MailItem.Send方法的例程中,您将isVBA = True在发送发生之前的任何时间添加 - 这将告诉您的事件处理程序这不是“手动”发送。

这是一个视觉表示:

Private isVBA As Boolean

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

    If Not isVBA Then

        Rem: Do what you need to do with a MANUAL send

    End If

End Sub

Sub myVBASendMethod()

    ' Setting this to true will tell the event that you're using MailItem.Send
    isVBA = True

    ' Event Triggered using MailItem.Send

    ' Reset this back to false
    isVBA = False

End Sub

推荐阅读