系统:Windows 10
软件:Outlook 2016
- 本系列讲讲在Outlook中使用VBA实现一些功能
- 今天讲讲当收件箱收到一个新邮件的时候,会触发响应
Part 1:场景描述
- 我们希望对收件箱进行监控,每收到一个新邮件的时候,就触发一个动作
- 延伸一下,我们可以对特定邮件进行处理,如邮件主题还有特定关键字的,等等
收到一封新邮件
Part 2:代码
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim outlookFldr As Folder
Dim outlookName As NameSpace
Set outlookName = Application.GetNamespace("MAPI")
Set outlookFldr = outlookName.GetDefaultFolder(olFolderInbox)
Set Items = outlookFldr.Items
End Sub
Private Sub Items_ItemAdd(ByVal Item As Object)
Debug.Print ("新收到的邮件主题是:" & Item.Subject)
MsgBox "新收到的邮件主题是:" & Item.Subject
End Sub
代码截图
Part 3:部分代码解读
- 若要实现本文中所实现的功能,肯定是要用到事件。Outlook中的
ThisOutlookSession
有点像Excel中的ThisWorkbook
工作簿事件- 双击
ThisOutlookSession
,默认情况下,只有一个Application,支持的事件如下图所示 - 的确有一个
Application_NewMail
事件,当收到新邮件时会触发该事件。但遗憾的是,不能够直接定位最新收到的邮件 - 所以我们需要一个新事件
- 双击
ThisOutlookSession
ThisOutlookSession支持的事件如下图
Private WithEvents Items As Outlook.Items
,通过WithEvents我们可以定义新事件,定义后新增了一个支持事件的对象Items,对应的事件有3个:- Items_ItemAdd
- Items_ItemChange
- Items_ItemAdd
新增Items对象
新增3个事件
3. Application_Startup
,outlook启动事件,上文实现了支持事件的对象定义,在这个Application_Startup
事件中将其初始化,定义为收件箱里的邮件对象。首次使用需要重启Outlook软件使其生效
4. Items_ItemAdd(ByVal Item As Object)
,新收到一个邮件时触发该事件
Ps:也是第1次使用WithEvents,挺有意思
- 更多学习交流,可加小编微信号
learningBin
更多精彩,请关注微信公众号
扫描二维码,关注本公众号