获取VIP特权
首页 > 模板攻略 > 其他 > Excel中如何批量发送邮件

2019-10-17 09:10:57

0已点赞

Excel中如何批量发送邮件



在日常工作中,经常会遇到需要群发邮件的情况,正常情况下只有一个个手工写邮件,然后发送。这样的工作效率可想而知。下面就介绍一个通过群发邮件的VBA程序。

一、数据准备

准备如下图的数据表,包括以下内容:

1 第一列为“邮件地址”,必须是完整的带后缀的邮件地址。

2 第二列为“邮件主题”,不同的收件人可以根据需要写不同的主题。

3 第三列为“邮件内容”,不同的收件人可以根据需要写不同的内容。这里的内容在发送时是以纯文本格式发送的,在单元格里设置的格式均无效。

4 第四列为“邮件附件”,附件必须带有完整的路径,且必须包括文件扩展名。

5 第五列为“邮件签名”,签名必须带有完整的路径,且必须包括文件扩展名。这里的邮件签名是自动提取使用者邮箱里设置的签名,如果没有设置签名,那么将为空。

Excel中如何批量发送邮件(1)


二、插入按钮

1、点击“开发者工具”页面,选择“插入”中的“控件工具”。然后选择“命令按钮”,如下图所示:

Excel中如何批量发送邮件(2)


2、画出按钮

在表格下面空白处画出“命令按钮”。这时候该按钮默认为编辑状态,按钮四周也有编辑框。如下图所示:

 

Excel中如何批量发送邮件(3)


三、输入代码

1、双击可编辑状态的“命令按钮”,便进入VBA代码编辑器。

 

Excel中如何批量发送邮件(4)


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"),"<>")

 

     '创建objOutlookOutlook应用程序对象

     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

如果帮到您!点个赞吧!

相关模板

3秒登陆,即可下载

注册即同意《我拉网服务使用协议》&《我拉网隐私政策》

QQ

QQ

邮箱

电话

提交

手机绑定

绑定手机号,账户更安全

中国 +86

手机号格式错误

按住滑块,拖拽到最右边
>>

验证码错误

温馨提示:微信绑定手机号,手机端也可以登录,我拉网将对用户隐私信息给予严格保密。

取消