You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA实现向Return列值为"No"的联系人发送邮件

需求:通过VBA给Excel中Return列为"No"的联系人发送邮件

先看你的Excel数据表格:

姓名邮箱地址Return
ABCabc@example.comno
DEFdef@example.comyes
GHIghi@example.comno

你的代码只写了开头部分,我帮你补全并优化,实现遍历表格、筛选出Return值为no的联系人并发送邮件的功能:

Private Sub CommandButton2_Click()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    ' 设置要操作的工作表,这里假设是当前活动工作表,可根据实际修改
    Set ws = ActiveSheet
    ' 获取数据最后一行行号
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 创建Outlook应用对象
    Set OutApp = CreateObject("Outlook.Application")
    
    ' 遍历数据行(从第2行开始,因为第1行是表头)
    For i = 2 To lastRow
        ' 判断当前行Return列(C列)的值是否为"no",不区分大小写
        If LCase(ws.Cells(i, "C").Value) = "no" Then
            ' 创建新邮件
            Set OutMail = OutApp.CreateItem(0)
            
            With OutMail
                .To = ws.Cells(i, "B").Value  ' 收件人邮箱(B列)
                .Subject = "这里填写邮件主题"  ' 替换为你的邮件主题
                .Body = "您好," & ws.Cells(i, "A").Value & vbCrLf & vbCrLf & _
                        "这是给您发送的提醒邮件。"  ' 替换为你的邮件内容,可自定义
                ' 如果需要发送附件,取消下面一行注释并修改路径
                ' .Attachments.Add "C:\路径\文件名.ext"
                .Send  ' 直接发送,若要先显示邮件窗口可改为.Display
            End With
            
            ' 释放邮件对象
            Set OutMail = Nothing
        End If
    Next i
    
    ' 释放Outlook应用对象
    Set OutApp = Nothing
    
    MsgBox "邮件发送完成!", vbInformation
End Sub

代码关键点说明:

  • 先获取数据的最后一行,避免遍历空行
  • 使用LCase统一转换为小写判断,避免大小写不一致导致漏发
  • 遍历每一行数据,符合条件就创建对应邮件
  • 邮件的收件人、主题、内容都可以根据实际需求修改
  • 最后记得释放对象,避免占用资源

内容的提问来源于stack exchange,提问作者diem_L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:06:34