昨天有一个粉丝说通过学习VBA课程,自己学会了如何将同一个工作簿中的上百张工作表拆分成单个工作簿,这样就可以将各个工作簿发给对应的分店,但是又遇到了一个新问题:就是他想利用VBA编程实现自动发送邮件。
其实,在任何公司发送邮件都是一件费时费力的工作,因为你发的每一封邮件都要一个分店对应一个附件,甚至有的公司花费上万元购买邮件群发软件。今天呢就和大家分享一下利用VBA实现批量发送邮件的代码,有需要的小伙伴们可以私信获取源文件。
第一步:准备数据
第一列为:邮箱地址,第二列为:邮件标题,第三列为:邮件正文,第四列为:要发送的文件(注意带上路径和后缀名)
第二步:插入新的模块,在模块中输入以代码
Option Explicit
'发送单封邮件
Sub sendEmail()
Dim objOutlook As New Outlook.Application ‘声明Outlook对象变量
Dim objMail As MailItem ’声明邮件列表对象变量
Dim i As Integer, endRow As Integer ‘声明i 和 endRow(最后一行)变量
endRow = Range('A1').CurrentRegion.Rows.Count ’计算最后一行的行号
Set objOutlook = New Outlook.Application ‘创建Outlook应用程序并赋值
For i = 2 To endRow ‘从第2行循环到最后一行
Set objMail = objOutlook.CreateItem(olMailItem) ’创建objMail为一个邮件对象
With objMail
.To = Range('A' & i).Value ‘发送给谁
.Subject = Range('B' & i).Value ’邮件标题
.HTMLBody = Range('C' & i).Value ‘邮件正文
.Attachments.Add Range('D' & i).Value ’添加附件,如果有多个附件可以 ; 分隔
.Send ‘发送
End With
Next
Set objOutlook = Nothing
Set objMail = Nothing
MsgBox '发送完成!'
End Sub
第三步:连续Outlook应用程序
VBA编辑器——工具——引用
第四步:测试运行
我是用163邮箱登录的Outlook,在发送邮件时,可以发送给163邮箱,但是在发送给QQ邮件时被当作垃圾邮件,发不出去。