批量发邮件:Excel中批量发送邮件也很方便
在日常工作中,经常会遇到需要群发邮件的处境,正常处境下只有一个个手工写邮件,然后发送。这样的工作效率可想而知。下面就教程一个通过群发邮件的VBA程序。
一、数据准备
准备如下图的数据表,包括以下内容:
1)第一列为“邮件地址”,必须是全能的带后缀的邮件地址。
2)第二列为“邮件主题”,不同的收件人可以根据需要写不同的主题。
3)第三列为“邮件内容”,不同的收件人可以根据需要写不同的内容。这里的内容在发送时是以纯文本格式发送的,在单元格里配置的格式均无效。
4)第四列为“邮件附件”,附件必须带有全能的路径,且必须包括文件扩展名。
5)第五列为“邮件签名”,签名必须带有全能的路径,且必须包括文件扩展名。这里的邮件签名是自动提取使用者邮箱里配置的签名,如果没有配置签名,那么将为空。
二、插入按钮
1、点击“开发者工具”页面,选择“插入”中的“控件工具”。然后选择“命令按钮”,如下图所示:
2、画出按钮
在表格下面空白处画出“命令按钮”。这时候该按钮默认为编辑状态,按钮四周也有编辑框。如下图所示:
三、输入代码
1、双击可编辑状态的“命令按钮”,便进入VBA代码编辑器。
2、复制以下代码到VBA编辑器中。替换掉编辑器里原有的两行内容。
privatesub CommandButton1_Click()
'要能正确发送并需要对Microseftoutlook进行有效设置
on Error Resume next
dim rowCount, endRowno
dim objoutlook As new outlook.Application
dim objMail As Mailitem
dim sigstring As string
dim signature As string
'取得当前工作表与Cells(1,1)相连的数据区行数
endRowno = Application.worksheetFunction.Countifs(Range("A:A"),"<>")
'创建objoutlook为outlook应用程序对象
set objoutlook = new outlook.Application
'开始循环发送电子邮件,比如从第二行开始,第一行是标题
For rowCount = 2 To endRowno
set objMail =objoutlook.Createitem(olMailitem) '创建objMail为一个邮件对象
'提取邮件签名
sigstring =worksheets("sheet1").Cells(2, 5)
if dir(sigstring) <>"" Then
signature =GetBoiler(sigstring)
Else
signature = ""
End if
with objMail
.To = Cells(rowCount,1).Value '配置收件人地址(从Excel表的第一列"邮件地址"字段中获得)
.subject = Cells(rowCount,2).Value '配置邮件主题(从Excel表的第二列"邮件主题"字段中获得)
.HTMLBody = Cells(rowCount,3).Value & signature '配置邮件内容(从Excel表的第三列"邮件内容"字段中获得)
.Attachments.Add Cells(rowCount,4).Value '配置附件(从Excel表的第四列"附件"字段中获得)
.send
End with
set objMail = nothing '销毁objMail对象
next
MsgBox ("邮件具体发送完成!")
set objoutlook = nothing '销毁objoutlook对象
End sub
'提取邮件签名子函数
FunctionGetBoiler(ByVal sFile As string) As string
dim fso As object
dim ts As object
set fso =Createobject("scripting.Filesystemobject")
set ts =fso.GetFile(sFile).openAsTextstream(1, -2)
GetBoiler = ts.readall
ts.Close
EndFunction
- 相关系统
- Win10纯净版系统下载