Outlook是Office软件中的其中一个组件,可以用于关联邮箱进行收发邮件。
要用用vba操作Outlook,首先要了解Outlook的vba对象模型。
Outlook的vba对象模型中Application对象为根对象,代表整个Outlook应用程序。
MailItem对象代表一封邮件,也是最常用的Outlook对象。
如果要用vba新建一封邮件,可以使用Application对象的CreateItem方法。
通过MailItem对象,可以设置一系列与邮件相关的内容。
比如可以通过To属性设置收件人的邮箱,其中如果有多个收件人可以使用分号分隔。
通过Subject属性设置要发送的邮件的主题,通过BodyFormat属性和Body属性设置要发送的邮件的内容格式以及具体的内容,通过CC属性和BCC属性设置要抄送和要密件抄送的邮箱,通过Attachments属性返回要发送邮件的所有附件集合对象,通过Attachments集合对象的Add方法可以添加指定的附件,最后通过Send方法发送邮件。
有了以上的知识,就可以使用如下的vba代码创建一个新的邮件,并且发送出去:
Sub QQ1722187970() Const olFormatPlain = 1 Const olFormatHTML = 2 Const olFormatRichText = 3 Const olFormatUnspecified = 0 Const olMailItem = 0 Dim sPath As String sPath = Excel.ThisWorkbook.Path & "\" Dim objOutlookApp Set objOutlookApp = CreateObject("Outlook.Application") '邮件附件对象 Dim objAttachment With objOutlookApp '一封邮件对象 Dim objMailItem Set objMailItem = .CreateItem(olMailItem) With objMailItem '收件人,多个收件人用分号间隔 .To = "1234@qq.com" '抄送人 .CC = "1722187970@qq.com" '密件抄送人 .BCC = "1722187970@qq.com" '邮件主题 .Subject = "Test" '邮件内容格式 .BodyFormat = olFormatPlain '邮件的内容 .Body = "sdf" '要添加的附件 .Attachments.Add sPath & "test.xlsx" '显示对话框 .Display '开始发送邮件 .Send End With End With End Sub
以上代码是后期引用Outlook.Application,下面的代码是前期引用Outlook.Application
Sub QQ1722187970() Dim sPath As String sPath = Excel.ThisWorkbook.Path & "\" Dim objOutlookApp As Outlook.Application Set objOutlookApp = New Outlook.Application '邮件附件对象 Dim objAttachment As Outlook.Attachment With objOutlookApp '一封邮件对象 Dim objMailItem As Outlook.MailItem Set objMailItem = .CreateItem(olMailItem) With objMailItem '收件人,多个收件人用分号间隔 .To = "1234@qq.com" '抄送人 .CC = "1722187970@qq.com" '密件抄送人 .BCC = "1722187970@qq.com" '邮件主题 .Subject = "Test" '邮件内容格式 .BodyFormat = olFormatRichText '邮件的内容 .Body = "sdf" '要添加的附件 .Attachments.Add sPath & "Test.xlsx" '显示对话框 .Display '开始发送邮件 .Send End With End With End Sub
有一个方法是save,不是send这个作用是什么?