我正试图找出一种方法来检测用户是否在显示的Outlook应用程序中单击“发送”。我试过读取.Display的值类似于在使用FileDialog应用程序(someInt = .Show)时如何检测用户输入,但无济于事。我找不到关于Outmail应用程序的任何文档,因此非常感谢任何帮助。
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
答案 0 :(得分:1)
我相信您需要拦截Outlook中的发送操作。
在Outlook中,转到VBA编辑器( Alt - F11 ),然后将其粘贴到 Microsoft Outlook对象下的 ThisOutlookSession 中强>
确保您的操作在Outlook中正常运行,然后关闭Outlook。您可能必须签署代码,根据您的环境更改宏安全设置。 取消的值决定用户是否点击了发送(例如,点击了 - >取消=假)。
由于没有直接获取取消值的方法,您可能需要在本地临时文件夹中创建一个唯一的文本文件,然后在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(Const olMailItem = 0
)中定义此 olMailItem 。