检测何时按下发送按钮

时间:2018-11-16 00:42:09

标签: vba button outlook send

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

  1. 通过在检查器窗口中按SEND按钮,或

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

如何使用Outlook VBA区分这些?

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

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

1 个答案:

答案 0 :(得分:1)

我不完全确定是否有一种方法可以检测项目的发送方式-但是,至少仍然存在一种变通方法,可以达到相同的效果。这将需要您在模块顶部创建一个布尔变量,在这种情况下,我们将使用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