使用EXCEL VBA代码自动群发带附件的邮件同时抄送给不同的人

使用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表中键入以下表格格式,填写好对应的内容,邮件附件内容填的是需要发送的附件地址。
使用EXCEL VBA代码自动群发带附件的邮件同时抄送给不同的人_第1张图片

第二步:插入命令按钮控件,进入设计模式,键入以上所有代码,保存。

使用EXCEL VBA代码自动群发带附件的邮件同时抄送给不同的人_第2张图片
第三步:配置outlook邮件发送环境,工具——引用——勾选outlook 15.0——确定。
使用EXCEL VBA代码自动群发带附件的邮件同时抄送给不同的人_第3张图片

第四步:点击命令按钮无反应,则回到VB编辑界面,点击图中三角形按钮,后显示邮件发送成功,完成。
使用EXCEL VBA代码自动群发带附件的邮件同时抄送给不同的人_第4张图片

你可能感兴趣的:(excel)