Vba 用户将文档附加到电子邮件时是否会发生Outlook事件?
我正在做一个检查电子邮件附件大小的项目,当发件人试图附加一个大文档时,它会通知发件人。我首先使用的示例代码如所示,它在运行子TestAttachAddd()时工作得非常好。但是,在代码运行时,当我手动创建新电子邮件并向其附加文件时,不会触发AttachmentAdd事件 我是否错误地使用了私有子项“newItem_AttachmentAdd”来完成我的任务 或者,当用户将文档(使用“附加文件”功能区按钮或通过拖放)附加到新电子邮件时,是否还有其他Outlook事件可用于检测Vba 用户将文档附加到电子邮件时是否会发生Outlook事件?,vba,vb.net,outlook,outlook-addin,Vba,Vb.net,Outlook,Outlook Addin,我正在做一个检查电子邮件附件大小的项目,当发件人试图附加一个大文档时,它会通知发件人。我首先使用的示例代码如所示,它在运行子TestAttachAddd()时工作得非常好。但是,在代码运行时,当我手动创建新电子邮件并向其附加文件时,不会触发AttachmentAdd事件 我是否错误地使用了私有子项“newItem_AttachmentAdd”来完成我的任务 或者,当用户将文档(使用“附加文件”功能区按钮或通过拖放)附加到新电子邮件时,是否还有其他Outlook事件可用于检测 Public Wit
Public WithEvents newItem As Outlook.MailItem
Private Sub newItem_AttachmentAdd(ByVal newAttachment As Attachment)
If newAttachment.Type = olByValue Then
newItem.Save
If newItem.Size > 500 Then '500 bytes used for testing purposes only
MsgBox "Warning: Item size is now " & newItem.Size & " bytes."
End If
End If
End Sub
Public Sub TestAttachAdd()
Dim olApp As New Outlook.Application
Dim atts As Outlook.Attachments
Dim newAttachment As Outlook.Attachment
Set newItem = olApp.CreateItem(olMailItem)
newItem.Subject = "Test attachment"
Set atts = newItem.Attachments
Set newAttachment = atts.Add("C:\Test.txt", olByValue)
End Sub
--------------------------更新最新工作版本1/27/2014
Public WithEvents goInspectors As outlook.Inspectors
Public WithEvents newItem As outlook.MailItem
Private Sub Initialize_Handlers()
Set goInspectors = outlook.Application.Inspectors
End Sub
Private Sub Application_Startup()
Initialize_Handlers
End Sub
Private Sub goInspectors_NewInspector(ByVal Inspector As Inspector)
If Inspector.CurrentItem.Class = olMail Then
Set newItem = Inspector.CurrentItem
End If
End Sub
Private Sub newItem_AttachmentAdd(ByVal newAttachment As Attachment)
If newAttachment.Type = olByValue Then
newItem.Save
If newItem.Size > 500 Then '500 bytes used for testing purposes only
MsgBox "Warning: Item size is now " & newItem.Size & " bytes."
End If
End If
End Sub
您需要将事件处理程序附加到正确的MailItem对象
捕获Application.Inspectors.NewInspector事件,然后从Inspector.CurrentItem检索新项目。Dmitry,感谢您回答我几乎所有的noob问题!不幸的是,我不太清楚你在说什么,我认为这超出了我对VB的基本理解。你有没有一个例子,我可以看看或指向我的网站,这样做?再次感谢!我在上找到了一个代码片段,其中显示了一个功能正常的AttachmentAdd。但它仍然需要先运行初始化Handler sub。有没有一种方法可以让它自动运行,这样我就可以在用户尝试添加附件时进行检测?您的代码在哪里运行?它是一个独立的应用程序还是一个COM插件?这是在VBA中。我可以在应用程序启动时设置检查器,现在它可以工作了。谢谢,德米特里!发现了一个bug。转载最新版本。因此,如果我打开一封新邮件,开始处理它,然后打开另一封邮件,如果我切换回第一封邮件并尝试附加文档,那么大小检查将不起作用。我认为这与我如何设置新项目有关。是否有办法将最上面的项目设置为新项目?我尝试使用ActiveInspector.CurrentItem,但我不知道如何使其保持“轮询”,并且我无法从
newItem\u AttachmentAdd
中执行此操作。有什么想法吗?谢谢