使用EXCEL VBA代码自动群发带附件的邮件同时抄送给不同的人
Private Sub CommandButton1_Click()
'要能正确发送并需要对Microseft Outlook进行有效配置
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表的第一列"邮件地址"字段中获得)
.CC = Cells(rowCount, 2).Value '设置抄送人地址(从Excel表的第二列"邮件地址"字段中获得)
.Subject = Cells(rowCount, 3).Value '设置邮件主题(从Excel表的第三列"邮件主题"字段中获得)
.HTMLBody = Cells(rowCount, 4).Value '设置邮件内容(从Excel表的第四列"邮件内容"字段中获得)
.Attachments.Add Cells(rowCount, 5).Value '设置附件(从Excel表的第五列"附件"字段中获得)
.Send
End With
Set objMail = Nothing '销毁objMail对象
Next
MsgBox (“邮件全部发送完成!”)
Set objOutlook = Nothing '销毁objOutlook对象
End Sub
'提取邮件签名子函数
Function GetBoiler(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
End Function
第一步:在excel表中键入以下表格格式,填写好对应的内容,邮件附件内容填的是需要发送的附件地址。
第二步:插入命令按钮控件,进入设计模式,键入以上所有代码,保存。
第三步:配置outlook邮件发送环境,工具——引用——勾选outlook 15.0——确定。
第四步:点击命令按钮无反应,则回到VB编辑界面,点击图中三角形按钮,后显示邮件发送成功,完成。
工作需要,每个月都要
群发
邮件
给
不同
team,
邮件
主题,cc信息等都根据team划分
不同
。手工发送经常用掉我大半时间,并且可能会有出错情况,想着还是写个小工具节省一些时间。
首先,需要在
VBA
中添加Outlook的组件: Tools > References, 勾选”Microsoft Office 16.0 Object Library。截图如下:
设想是发送
不同
邮件
给
不同
的人,并且添加的
附件
也不一样,因此在
excel
中,建立以下几项:
A1: Receiver Address #收件人邮箱,多
1)绝对路径:文件或者文件夹在计算机中的全路径(windows从盘开始写,而且程序写绝对路径的时候字符串的最前面要加r) 2)相对路径:前提:需要操作的文件或者文件夹在工程里面的时候才可以
使用
相对路径 a)用 . 开头表示当前目录(当前目录指的是,当前
代码
文件所在的文件夹),注意:如果相对路径是以’./‘开头的,’./'可以省略 b)用 … 开头表示当前目录的上层目录。
CDO有多个组件,其中Message组件是
邮件
组件,
使用
其
发送邮件
是非常快速的,而且不需要任何附加的安装。有以上几步,我们的
VBA
应用就可以随意批量
发送邮件
了。只要将第4步中的SMTP服务器地址、发送方邮箱和密码更改成开发者的实际信息,就能成功发送了。对于一封
邮件
,通常有
邮件
标题、发件人、收件人、
抄
送人、
邮件
正文、
邮件
附件
等要素。我们就以这几个要素为参数,来设计一个能够
发送邮件
的函数。4) 配置发送服务器的信息,包括SMTP服务器地址、服务器端口、发送端口、发送方邮箱名称,发送方邮箱密码等。
之前有给大家分享过一篇关于批量将word转成pdf的文件,然后将pdf文件批量按照指定收件人进行
邮件
发送的文章。文章可以参照:
不同
附件
的
邮件
批量发给
不同
的指定人 批量发送
带
PDF
附件
的
邮件
昨天一台湾的网友咨询了这个问题,同时他也给我分享了他在网上下载的另外一个版本,个人觉得很非常实用,这里给大家分享一下。文末会分享链接,大家可以下载保存,万一以后用得上呢。先来看看怎么用吧,因为中间确实有个设置...
以往的批量
发送邮件
教程中,常常采用word+outlook的结合,采用
邮件
合并的方式进行批量发送,但采取这样的方式
发送邮件
不能添加
附件
,本文采取word+outlook+office assitans的结合实现
带
附件
邮件
的批量发送。
注意:qq邮箱要开启smtp协议
Sub sendMail(strTo As String, strSubject As String, strMsg As String, strFrom As String, strPassword As String)
Set objEmail = CreateObject("CDO.Message") '创建对象
objEmail.From = strFrom '设置发信人的邮箱
objEmail.To = strTo '设...
1、安装offcie2013(完全安装)后点击outlook2013,安装outlook2013。2、编辑好需要提取数据的
excel
表格,表头的名称命名最好是英文字母。3、编辑word的
邮件
内容,选择
邮件
菜单下的开始
邮件
合并,点击电子
邮件
。调整好
邮件
排版格式选择收件人,从本地导入
excel
选择完
excel
表格后可验证是否选择的正确4、插入合并域,光标点击到需要插入的位置,待选择需要插入的
excel
...
二、例子转⇒实现
excel
工资单的
自动
发送 每个公司每月发工资的同时要给每个员工一张工资单。而发工资单的主要目的是让员工知道自己一个月来工资组成的详细情况,确认财务结算是否有误。一般的处理方式是直接在原来全员工资表的基础上给每个员工记录前插入表头等整张打印出来后一条一条的剪裁出来发给各个员工。这种方式对小公司来说还可以,但当公司达到好几十上百或上千的员工时,财务人员光每个月剪裁着工资单就