据我所知,有两种方法可以在Outlook中发送邮件:
通过在检查器窗口中按SEND按钮,或
通过宏命令执行MailItem.Send
如何使用Outlook VBA区分这些?
具体来说,如何检测按下SEND按钮的时间?
可以ItemSend()
进行修改以仅捕获此事件,而不能捕获其他事件吗?
答案 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