vba群发电子邮件

  

vba是excel中非常强大的功能之一,甚至可以用于电子邮件群发,但很多人还不知道,今天一米软件就来给大家分享一下使用EXCEL VBA代码自动群发带附件的邮件同时抄送给不同的人的经验。


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


vba群发电子邮件具体步骤如下:

第一步:在excel表中键入以下表格格式,填写好对应的内容,邮件附件内容填的是需要发送的附件地址。


表格第一行分别为:邮件地址、抄送人、邮件主题、邮件内容、邮件附件、邮件签名


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


第三步:配置outlook邮件发送环境,工具——引用——勾选outlook 15.0——确定。


第四步:点击命令按钮无反应,则回到VB编辑界面,点击图中三角形按钮,后显示邮件发送成功,完成。

相关资讯