Outlook-VBA-04-收件箱自动处理

系统:Windows 10
软件:Outlook 2016

  • 本系列讲讲在Outlook中使用VBA实现一些功能
  • 今天讲讲当收件箱收到一个新邮件的时候,会触发响应

Part 1:场景描述

  1. 我们希望对收件箱进行监控,每收到一个新邮件的时候,就触发一个动作
  2. 延伸一下,我们可以对特定邮件进行处理,如邮件主题还有特定关键字的,等等

收到一封新邮件请添加图片描述

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:部分代码解读

  1. 若要实现本文中所实现的功能,肯定是要用到事件。Outlook中的ThisOutlookSession有点像Excel中的ThisWorkbook工作簿事件
    • 双击ThisOutlookSession,默认情况下,只有一个Application,支持的事件如下图所示
    • 的确有一个Application_NewMail事件,当收到新邮件时会触发该事件。但遗憾的是,不能够直接定位最新收到的邮件
    • 所以我们需要一个新事件

ThisOutlookSession
请添加图片描述
ThisOutlookSession支持的事件如下图
请添加图片描述

  1. Private WithEvents Items As Outlook.Items,通过WithEvents我们可以定义新事件,定义后新增了一个支持事件的对象Items,对应的事件有3个:
    • Items_ItemAdd
    • Items_ItemChange
    • Items_ItemAdd

新增Items对象
请添加图片描述
新增3个事件
请添加图片描述
3. Application_Startupoutlook启动事件,上文实现了支持事件的对象定义,在这个Application_Startup事件中将其初始化,定义为收件箱里的邮件对象。首次使用需要重启Outlook软件使其生效
4. Items_ItemAdd(ByVal Item As Object),新收到一个邮件时触发该事件

Ps:也是第1次使用WithEvents,挺有意思


  • 更多学习交流,可加小编微信号learningBin

更多精彩,请关注微信公众号
扫描二维码,关注本公众号

公众号底部二维码.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值