当前位置:主页 > 纯净版系统教程 >

批量发邮件:Excel中批量发送邮件也很方便

发布时间:2012-04-09    作者:纯净版官网    来源:http://www.ku551.com

  批量发邮件: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纯净版系统下载
  • 栏目专题推荐
  • 纯净版系统推荐
  • 系统教程推荐

友情链接: