乐于分享
好东西不私藏

Excel VBA批量群发邮件|核心代码+极简操作

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 = “密送邮箱”(多邮箱用分号分隔)。