系统:Windows 10
软件:Outlook 2016
- 本系列讲讲在Outlook中使用VBA实现一些功能
- 例如邮件的自动处理
- 今天讲讲环境信息
Part 1:背景
- 之前在Excel中使用VBA实现了自动发邮件的功能,也是在Excel中引用了Outlook
- 但是对于某些场景,仅仅使用Excel这种方式还不行。如自动对每一封新邮件一些处理
- Office的Outlook本身也是支持VBA的二次开发,所以一起来看看
Part 2:环境介绍
- 和Excel中打开开发环境类似。文件-选项-自定义功能区-主选项卡-勾选开发工具
打开开发工具
效果
5. 写代码的地方,类似Excel-VBA,在VBE中新建一个模块,可以写入代码。自带了一个ThisOutLookSession,这个后续再介绍
写代码的地方
- 有的时候会提示无法运行宏,需要在选项-信任中心-信任中心设置-宏设置-启用所有宏
Part 3:代码
Sub test()
Dim outlookMail As MailItem
Dim outlookFolder As Folder
Dim outlookName As NameSpace
Set outlookName = Application.GetNamespace("MAPI")
Set outlookFolder = outlookName.GetDefaultFolder(olFolderInbox)
' 获取某个邮件,使用subject获取
Set outlookMail = outlookFolder.Items("附件")
Debug.Print (outlookMail.Subject)
Debug.Print (outlookMail.Body)
Debug.Print (outlookMail.ReceivedTime)
End Sub
代码截图
运行结果
邮件原文
Part 4:部分代码解读
Set outlookName = Application.GetNamespace("MAPI")
获取Outlook的API接口,简单理解的话,可以理解成一个Outlook的入口Set outlookFolder = outlookName.GetDefaultFolder(olFolderInbox)
,获取收件箱对象Set outlookMail = outlookFolder.Items("附件")
,获取主题名称为附件的这一份收件箱的邮件,有点逐层定位的意思。有点像Excel中工作簿-工作表-单元格的感觉outlookMail.Subject
获取该邮件的主题名称outlookMail.Body
获取该邮件的正文outlookMail.ReceivedTime
获取该邮件的接收时间MailItem
这个对象有很多对应的属性、方法、事件,详细见对象浏览器中的信息
MAPI官方解释
Microsoft Outlook 消息处理 API (MAPI) 引用。 MAPI 提供适用于 Microsoft Outlook 2013 和 Outlook 2016 的消息处理体系结构。 适用于 Outlook 的 MAPI 提供了一系列接口、函数和其他数据类型,以便加快 Outlook 消息处理应用程序的开发进程。 应用程序和传输使用 MAPI 处理电子邮件数据,创建电子邮件以及用于存储电子邮件的文件夹,并支持对现有的 MAPI 相关数据的更改通知。
Outlook左侧边栏
MailItem
- 更多学习交流,可加小编微信号
learningBin
更多精彩,请关注微信公众号
扫描二维码,关注本公众号