Excel中自动发邮件有四种方法:一、VBA调用Outlook基础发送;二、Worksheet_Change事件实时监控触发;三、导出CSV配合Outlook规则免编程转发;四、Power Automate Desktop通过SMTP云发送。

如果您希望在Excel中根据特定条件自动触发邮件发送,需借助VBA编程调用Outlook对象模型实现。以下是实现该功能的多种方法:
一、使用VBA调用Outlook发送邮件(基础方法)
此方法通过Excel内置的VBA编辑器编写脚本,直接创建并发送邮件,无需第三方插件,依赖本地已安装且配置正常的Outlook客户端。
1、按 Alt + F11 打开VBA编辑器。
2、在左侧工程资源管理器中,右键“此工作簿”,选择“插入” → “模块”。
3、在新模块中粘贴以下代码:
Sub SendEmailByCondition()
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
If Range("A1").Value > 100 Then
With OutlookMail
.To = "recipient@example.com"
.CC = ""
.Subject = "Excel条件触发提醒"
.Body = "单元格A1数值:" & Range("A1").Value & ",已超过阈值。"
.Send
End With
End If
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
4、返回Excel,按 Alt + F8 调出宏对话框,选中“SendEmailByCondition”并点击“运行”。
二、结合Worksheet_Change事件实时监控并触发(事件驱动法)
该方法将VBA代码绑定至工作表的变更事件,当指定单元格内容发生变化且满足条件时,自动执行邮件发送,适用于动态数据监控场景。
1、在VBA编辑器中,双击左侧“Sheet1”(或对应目标工作表名称)。
2、在代码窗口顶部下拉菜单中,选择“Worksheet”,再选择“Change”事件。
3、输入以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2")) Is Nothing Then
If Range("B2").Value = "逾期" Then
Call SendAlertEmail
End If
End If
End Sub
Sub SendAlertEmail()
Dim OutApp As Object: Set OutApp = CreateObject("Outlook.Application")
Dim OutMail As Object: Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = Range("C2").Value
.Subject = "【紧急】订单状态更新提醒"
.Body = "订单号:" & Range("A2").Value & ",当前状态为:" & Range("B2").Value
.Send
End With
Set OutMail = Nothing: Set OutApp = Nothing
End Sub
4、保存文件为启用宏的格式(.xlsm),关闭并重新打开Excel以激活事件监听。
三、使用Outlook规则配合Excel导出CSV触发(免编程法)
此方法不依赖VBA,通过Excel定期导出符合筛选条件的数据为CSV文件,再利用Outlook规则检测附件关键词并自动转发,适合IT权限受限或禁用宏的环境。
1、在Excel中使用“高级筛选”或“自动筛选”,将满足条件(如“状态=未处理”)的数据复制到新工作表。
2、选中新工作表全部数据,按 Ctrl + C 复制,新建记事本,粘贴后另存为UTF-8编码的 alert_data.csv。
3、手动创建一封含该CSV附件的测试邮件,发送至自己邮箱。
4、登录Outlook客户端,在“文件”→“管理规则和通知”中新建规则:选择“当收到具有特定词语的主题或正文时”,设置条件为“主题包含‘AutoAlert’”,操作为“将它转发给”指定邮箱,并勾选“且具有附件”。
5、后续只需在Excel中生成CSV并发送带“AutoAlert”主题的邮件,即可触发自动转发流程。
四、调用Power Automate Desktop实现无Outlook客户端发送(云服务法)
该方法绕过本地Outlook依赖,通过Power Automate Desktop连接Office 365或Microsoft Exchange账户,直接调用SMTP协议发信,适用于无本地Outlook或使用Web版Outlook的用户。
1、下载并安装Power Automate Desktop(免费版可用)。
2、新建流程,添加“Excel”操作:“从Excel工作表读取数据”,指定文件路径与筛选条件(如“D列=‘Y’”)。
3、添加“发送电子邮件”操作,填写SMTP服务器为 smtp.office365.com,端口587,启用SSL/TLS,输入企业邮箱账号与应用密码。
4、在邮件正文字段中插入Excel读取的变量,例如 %ExcelData[0]["客户姓名"]%。
5、设置触发方式为“计划任务”,例如每15分钟检查一次Excel文件修改时间,有更新则运行流程。



















