Excel VBA批量群发邮件|核心代码+极简操作
无需手动复制粘贴,用Excel VBA一键批量发邮件,核心代码+关键说明如下,零基础可直接套用。
前置条件:电脑安装并登录Outlook;Excel按“A列收件人、B列抄送、C列主题、D列正文、E列附件路径”填写(第一行为表头),附件路径多文件用分号分隔。

一、开启Excel开发工具(必做)
Excel→文件→选项→自定义功能区,勾选“开发工具”,确定即可(一次设置,终身可用)。
二、核心VBA代码(直接复制运行)
按Alt+F11打开VBA编辑器→插入→模块,粘贴以下代码,按F5运行即可批量发送。
Sub 批量发送邮件()
' 定义变量
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim i As Integer
Dim lastRow As Integer
Dim 附件数组 As Variant
Dim j As Integer
' 关闭屏幕刷新,提升运行速度
Application.ScreenUpdating = False
' 创建Outlook对象,调用邮箱
Set OutlookApp = CreateObject("Outlook.Application")
' 自动识别Excel有内容的最后一行,无需手动修改
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 循环发送(从第2行开始,跳过表头)
For i = 2 To lastRow
Set OutlookMail = OutlookApp.CreateItem(0) ' 固定邮件格式
With OutlookMail
.To = Range("A" & i).Value ' 读取A列收件人
.CC = Range("B" & i).Value ' 读取B列抄送(无则留空)
.Subject = Range("C" & i).Value ' 读取C列主题
.Body = Range("D" & i).Value ' 读取D列正文
' 读取E列附件,多附件用分号分隔
If Range("E" & i).Value <> "" Then
附件数组 = Split(Range("E" & i).Value, ";")
For j = 0 To UBound(附件数组)
.Attachments.Add Trim(附件数组(j))
Next j
End If
.Send ' 后台静默发送,不弹窗
End With
Set OutlookMail = Nothing ' 释放内存
Next i
Application.ScreenUpdating = True ' 恢复屏幕刷新
MsgBox "共发送 " & lastRow - 1 & " 封邮件,全部成功!", vbInformation ' 发送提示
Set OutlookApp = Nothing ' 释放Outlook对象
End Sub
三、核心代码解释(看懂更放心)
-
自动循环:从第2行到最后一行,逐行读取Excel数据,无需手动设置发送数量;
-
数据对应:A列=收件人、B列=抄送、C列=主题、D列=正文、E列=附件,与表格一一对应;
-
静默发送:后台运行,不弹出邮件编辑窗口,不干扰操作;
-
内存释放:避免Excel卡顿,确保批量发送流畅。
四、关键提醒(极简避坑)
-
报错“找不到Outlook对象”:确认Outlook已安装并登录,重启Excel重试;
-
附件发送失败:检查附件路径是否完整、文件是否关闭、文件名无特殊字符;
-
测试建议:先填1行自己的邮箱测试,确认无误再批量发送。
五、进阶补充(可选)
1. HTML格式正文:将代码中.Body替换为.HTMLBody,可添加颜色、加粗、换行;
2. 添加密送:在.CC行下方添加.BCC = “密送邮箱”(多邮箱用分号分隔)。
夜雨聆风