在Excel中使用VBA Outmail应用程序检测用户select

我试图找出一种方法来检测用户是否在所显示的Outlook应用程序中单击“发送”。 我已经尝试读取.Display的值,类似于使用FileDialog应用程序(someInt = .Show)时如何检测用户input,无济于事。 我无法findOutmail应用程序的任何文档,所以任何帮助将不胜感激。

Set olApp = CreateObject("Outlook.Application") Set Outmail = olApp.CreateItem(olMailItem) With Outmail .To = clientEmail .CC = projectManagerEmail .BCC = "" .Subject = projectName & " (PO # " & poNumber & ", Job #" & projectNumber & ") - " & fileType & " (" & fileName & ")" .Attachments.Add ActiveWorkbook.Path & "\" & fileType & "\" & folderName & "\" & fileName & ".pdf" .Display .Save End With 

我相信你需要拦截Outlook中的发送操作。

在Outlook中,转到VBA编辑器( AltF11 ),然后将其粘贴到Microsoft Outlook对象下的ThisOutlookSession中

确保您的操作在Outlook中工作,然后closuresOutlook。 您可能必须签署代码,根据您的环境更改macros安全设置。 取消值取决于用户是否点击了发送(例如点击 – >取消= False)。

由于没有直接的方法来获取取消的值,可能是您必须在本地临时文件夹中创build一个唯一的文本文件,并在Excel中选取它表示它已发送。

 Private Sub Application_ItemSend(ByVal oItem As Object, Cancel As Boolean) ' Add Operations or Sub calls here MyCheck01 oItem, bCancel End Sub Private Sub MyCheck01(ByVal oItem As Object, Cancel As Boolean) ' Do operations here. If Send is to be aborted, set Cancel to True. End Sub 

您还需要在Excel中定义此olMailItemConst olMailItem = 0 )。