在日常工作中,经常会遇到需要群发邮件的情况,但很多时候我们有的只是一张有邮箱地址的excel表格,很多人这时不知道下一步该怎么做,今天一米软件就来教教大家怎么给excel表格中的邮箱群发邮件。
一、数据准备
主要包括以下内容:
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