vba - 如何将收件箱 ItemAdd 转换为在子文件夹上运行?
问题描述
我的代码不起作用,因为电子邮件被转发到带有规则的子文件夹。
我无法删除此规则,也无法在此计算机上制定任何规则。
我意识到 newMailEx 可能是我的问题的答案。有没有办法将我的代码转换为运行它而不是 item_add?
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set Items = objNS.Folders.Item("Data").Folders.Item("Inbox").Items
End Sub
Private Sub Items_ItemAdd(ByVal Item As Object)
Dim Msg As Outlook.MailItem
If TypeOf Item Is Outlook.MailItem Then
'''code to check subject lines and do various things to attachments for the various cases
End If
End Sub
解决方案
如果您在 Outlook 中创建 VBA 宏,您需要Application
在左侧下拉菜单中选择 并选择NewMailEx
要在编辑器中生成事件处理程序的事件。
NewMailEx
从下拉列表中选择条目后,您将获得以下内容,您可以在其中添加代码:
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
End Sub
因此,在事件处理程序中,您可以通过以下方式使用 `` 方法:
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim mail as Outlook.MailItem
Set mail = Application.Session.GetItemFromID(strEntryId)
MsgBox mai.Subject
End Sub
请记住,可以将不同类型的项目传递给事件处理程序。例如,它可以是约会项目(会议请求)。您需要在转换到该类之前检查其消息类,MailItem
以确保您处理邮件项目。否则,如果调用不存在的方法或属性,可能会引发异常。
推荐阅读
- node.js - NodeJS 请求库如何获取完整的 URL,包括 URI 和查询字符串参数
- ios - 返回 Ionic 2 中的上一个应用程序
- delphi - 为什么我只在 HTTPS (SSL) 站点上使用 Indy 获得“对等连接重置”?
- javascript - 以 1969 为到期日期的 cookie 是什么意思?
- java - 无法使用类型编号的 where 条件从数据库中检索行
- jquery - Ajax 调用未命中 asp.net 网页表单页面的功能
- javascript - 如何捕获被拒绝的 Promise?
- visual-studio-code - 无法找到清单文件brightscript roku Visual Studio 代码
- powershell - 比较参数不能正常工作
- upload - 元素ui上传组件不发送流数据