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这个作用是什么?