VBA 批量发送邮件

news2024/9/17 8:45:01

1. 布局

2. 代码

前期绑定的话,需要勾选 Microsoft Outlook 16.0 Object Library

Option Explicit

Const SEND_Y As String = "Yes"
Const SEND_N As String = "No"
Const SEND_SELECT_ALL As String = "Select All"
Const SEND_CANCEL_ALL As String = "Cancel All"

Private Sub btnSendMail_Click()
    Dim i, j As Long
    Dim strSub As String
    Dim strBody As String
    Dim strSendFlag As String
    Dim arrFile() As String
    Dim strFile As String
    
    Dim objApp As Object
    Dim objMail As Object
    'Dim objApp As New Outlook.Application
    'Dim objMail As MailItem
    
    Set objApp = CreateObject("Outlook.Application")
    
    
    For i = 4 To Range("B" & Rows.Count).End(xlUp).Row
        strSendFlag = Range("B" & i).Value
        
        If strSendFlag = SEND_Y Then
            Set objMail = objApp.CreateItem(0)
            On Error Resume Next
            With objMail
                .To = Range("C" & i).Value
                .CC = Range("D" & i).Value
                .BCC = Range("E" & i).Value
                .Subject = Range("F" & i).Value
                .HTMLBody = Range("G" & i).Value
                ''''''''''''''''''
                strFile = Range("H" & i).Value
                If strFile <> vbNullString Then
                    arrFile = Split(strFile, vbLf)
                End If
                For j = LBound(arrFile) To UBound(arrFile)
                    .Attachments.Add arrFile(j)
                Next j
                
                
                .Display
                '.Send
            End With
            Set objMail = Nothing
            On Error GoTo 0
        End If
    Next
    
    Set objApp = Nothing
    
    MsgBox "Done."
    
End Sub

Private Sub btnSendFlag_Click()
    Dim i As Long
    Dim strSendFlag As String
    
    Columns("B").ColumnWidth = 10
    
    
    btnSendFlag.Top = Range("B1").Top
    btnSendFlag.Left = Range("B1").Left
    btnSendFlag.Width = Range("B1").Width
    btnSendFlag.Height = Range("B1").Height + Range("B2").Height
    
    
    If btnSendFlag.Caption = SEND_SELECT_ALL Then
        strSendFlag = SEND_Y
        btnSendFlag.Caption = SEND_CANCEL_ALL
    Else
        strSendFlag = SEND_N
        btnSendFlag.Caption = SEND_SELECT_ALL
    End If
   
    For i = 4 To Range("B" & Rows.Count).End(xlUp).Row
        Range("B" & i).Value = strSendFlag
    Next i
    
    
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    If Target.Column = 2 Then
        If Target.Row >= 4 And Target.Row <= Range("B" & Rows.Count).End(xlUp).Row Then
            If Target.Value = SEND_Y Then
                Target.Value = SEND_N
            Else
                Target.Value = SEND_Y
            End If
        End If
    End If
    
End Sub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1918504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASP.NET Web应用中的 Razor Pages/MVC/Web API/Blazor

如果希望使用ASP.NET Core创建新的 Web 应用程序&#xff0c;应该选择哪种方法&#xff1f;Razor Pages还是 MVC&#xff08;模型-视图-控制器&#xff09;&#xff0c;又或者使用Web API Vue/React/......。 每种方法都有各自的优点和缺点。 什么是 MVC&#xff1f; 大多数服…

Windows桌面上透明的记事本怎么设置

作为一名经常需要记录灵感的作家&#xff0c;我的Windows桌面总是布满了各种文件和窗口。在这样的环境下&#xff0c;一个传统的记事本应用往往会显得突兀&#xff0c;遮挡住我急需查看的资料。于是&#xff0c;我开始寻找一种既能满足记录需求&#xff0c;又能保持桌面整洁美观…

ozon商家版本APP下载,ozon商家版本是怎么样的

在数字化时代&#xff0c;电子商务平台正以前所未有的速度扩张其市场份额&#xff0c;其中俄罗斯的Ozon平台便是典型代表。作为Ozon平台的商家&#xff0c;了解和掌握Ozon商家版本APP的使用对于提升经营效率、把握销售机会至关重要。本篇文章将为您解析Ozon商家版本APP的下载途…

搭建邮局服务器的配置步骤?如何管理协议?

搭建邮局服务器需要考虑的安全措施&#xff1f;怎么搭建服务器&#xff1f; 在现代互联网环境中&#xff0c;电子邮件是重要的沟通工具。为了保证信息传递的稳定性和安全性&#xff0c;许多企业选择自行搭建邮局服务器。AokSend将详细介绍搭建邮局服务器的配置步骤&#xff0c…

JeeSite与TopIAM整合实现单点登录(SSO)的技术探讨

一、引言 在现今的企业级应用系统中&#xff0c;随着业务的发展和系统的复杂化&#xff0c;单点登录&#xff08;Single Sign-On&#xff0c;简称SSO&#xff09;已成为提升用户体验、增强系统安全性的重要手段。JeeSite作为一个高效、高性能、强安全性的Java EE快速开发平台&…

zookeeper加入开机启动项

Windows的任务计划程序&#xff08;Task Scheduler&#xff09;是一个强大的工具&#xff0c;允许你安排程序在特定时间自动运行&#xff0c;包括开机时。 打开任务计划程序&#xff1a; 按下Win R键&#xff0c;打开“运行”对话框。输入taskschd.msc并回车&#xff0c;打开…

使用Docker制作python项目镜像

各docker桌面版本集合&#xff1a;如果提示新版本系统不支持&#xff0c;可下载旧版本 我也分享在下面。 链接: https://pan.baidu.com/s/1HvaO2wOIE3pNE0bM7Qm3sA?pwdg7ky 提取码: g7ky –来自百度网盘超级会员v2的分享 来源参考&#xff1a;https://zhuanlan.zhihu.com/p/65…

前端 js 单引号,双引号、斜杠, 表格 tr input、checkbox、、、、

直接上代码 var target (leftOrRight LEFT ? $("#left") : $("#right"));target.empty();// let tbody $("resultRight tbody");// tbody.empty();for (var i 0; i < items.length; i) {debugger// target.append("<option valu…

超纯水除硼 ,芯片专用超纯水硼的去除方法

硼在元素周期表里面是五号元素&#xff0c;是IIIA族中唯一 一个非金属元素。它是制造P型半导体的主要掺杂剂&#xff0c;基材中硼的含量直接影响半导体的极限电压&#xff0c;因此要严格控制基材中硼的含量。在半导体制造的过程中&#xff0c;水、气、化直接跟产品接触&#xf…

「51媒体」能否提供一份成功邀约媒体的技巧?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 成功邀约媒体的技巧涉及多个方面&#xff0c;包括了解媒体…

MongoDB教程(二):mongoDB引用shell

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、MongoD…

MessageBox与HubSpot:企业沟通与客户管理的双重利器

今天咱们来聊聊两个超实用的工具——MessageBox和HubSpot。它们就像是你的超级助手&#xff0c;让你和客户沟通起来更顺畅&#xff0c;管理起来也更轻松。 先说说MessageBox吧 想象一下&#xff0c;你正在忙着工作&#xff0c;突然客户发来个消息&#xff0c;你嗖的一下就收到…

拉卡拉支付 Go SDK

最近有一个需求&#xff0c;需要用到拉卡拉的支付&#xff0c;然后秉着开源精神去网上找到了 github.com/go-pay/gopay 一个支付的库&#xff0c;等到我使用的时候却发现拉卡拉的实现是 国外的接口&#xff0c;&#x1f602;&#x1f602;&#x1f602;。 无奈之下&#xff0c…

NFS服务器、autofs自动挂载综合实验

综合实验 现有主机 node01 和 node02&#xff0c;完成如下需求&#xff1a; 1、在 node01 主机上提供 DNS 和 WEB 服务 2、dns 服务提供本实验所有主机名解析 3、web服务提供 www.rhce.com 虚拟主机 4、该虚拟主机的documentroot目录在 /nfs/rhce 目录 5、该目录由 node02 主机…

【Linux网络】IP协议{初识/报头/分片/网段划分/子网掩码/私网公网IP/认识网络世界/路由表}

文章目录 1.入门了解2.认识报头3.认识网段4.路由跳转相关指令路由 该文诸多理解参考文章&#xff1a;好文&#xff01; 1.入门了解 用户需求&#xff1a;将我的数据可靠的跨网络从A主机送到B主机 传输层TCP&#xff1a;由各种方法&#xff08;流量控制/超时重传/滑动窗口/拥塞…

【IOS】React Native之HelloWorld

RN搭建开发环境 rvm 安装3.2.2 brew install node18 brew install watchman# 使用nrm工具切换淘宝源 npx nrm use taobao# 如果之后需要切换回官方源可使用 npx nrm use npmnpm install -g yarnbrew install cocoapodsnpm uninstall -g react-native-cli react-native-communi…

Ajax从零到实战

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

RK3568笔记三十三: helloworld 驱动测试

若该文为原创文章&#xff0c;转载请注明原文出处。 报着学习态度&#xff0c;接下来学习驱动是如何使用的&#xff0c;从简单的helloworld驱动学习起。 开始编写第一个驱动程序—helloworld 驱动。 一、环境 1、开发板&#xff1a;正点原子的ATK-DLRK3568 2、系统&#xf…

Spring源码二十二:Bean实例化流程五

上一篇Spring源码二十一&#xff1a;Bean实例化流程四&#xff0c;咱们主要分析里createBeanInstance方法Spring给我们提供给的FactoryMethod方法&#xff0c;举例说明了factoryMethod属性如何使用&#xff0c;同时简单讨论了具体实现逻辑。 这一篇咱们将进入反射实例化Bean&am…

JavaEE初阶-网络原理2

文章目录 前言一、TCP报头结构二、TCP的十个核心机制2.1 确认应答2.2 超时重传2.3 连接管理2.3.1 建立连接&#xff1a;三次握手2.3.2 断开连接&#xff1a;四次挥手. 2.4 滑动窗口2.5 流量控制2.6 拥塞控制2.7 延时应答2.8 捎带应答2.9 面向字节流2.10 异常情况2.11 补充 前言…