用Excel和OutLook实现自动批量发邮件

65 篇文章 2 订阅
10 篇文章 0 订阅

转自:https://zhuanlan.zhihu.com/p/25283201

作者:闲者秋山

闲者秋山

相信不少人的工作中都有这样的情况,需要群发通知邮件的情况。

(比如财务付完款,要通知供应商,房东之类的)

但如果要发的邮件的收件人

要求的附件和邮件正文都不一样,

且收件人数量极多,那这个工作量就很大。

虽然很多公司可以引进软件解决这问题,

但更多的公司是不舍得花这个钱的。

这里介绍一个仅靠Office就可以实现的方法
我会尽量备注注释来解释代码的意思,

但如果还是看不懂,

请大家先自己进行一些VBA基础知识的学习。

先按照上图,用Excel做一个表格。

名为sheet1

然后alt+f11,呼出vba编辑器,insert ,选择module,复制以下代码。

Sub sendBatchMail()
 t = Timer   '计时器开始

Dim rowCount, endRowNo
Dim objOutlook As New Outlook.Application
Dim objMail As MailItem
Dim sendIndex

endRowNo = ThisWorkbook.Sheets("Sheet1").[a65535].End(xlUp).Row
 '取sheet1的最后一行是多少行

Set objOutlook = New Outlook.Application

ThisWorkbook.Sheets("sheet1").Select

For rowCount = 2 To endRowNo '循环从第二行运行到最后一行

Set objMail = objOutlook.CreateItem(olMailItem)

subjectname = ThisWorkbook.Sheets("sheet1").Range("b" & rowCount) '赋值邮件名

bodyname = ThisWorkbook.Sheets("sheet1").Range("c" & rowCount) '赋值邮件正文

attach_address = ThisWorkbook.Sheets("sheet1").Range("d" & rowCount)
'赋值附件所在的地址链接

With objMail
.To = Cells(rowCount, 1) 
.Attachments.Add attach_address
.Body = bodyname 
.Subject = subjectname
.sendIndex = rowCount Mod objOutlook.Session.Accounts.Count + 1 
'要发的邮件分到服务器上
.SendUsingAccount = objOutlook.Session.Accounts.Item(sendIndex)
.Send
End With
Set objMail = Nothing
Application.Wait (Now + TimeValue("0:00:15"))
 '发完一封邮件等15秒左右,觉得时间太久可以自己调整
Next
MsgBox "Done!" & Chr(10) & "Run time is " & Timer - t & "seconds"
 '结束后,显示计时器结果
End Sub

当然这是一个我已经简化后的模型。

当你稍微了解一些代码结构后,你完全可以自己修改一下代码,

重新设计符合自己公司格式要求的程序。

下图是我设计的简单的模板,按钮可以去设定中,quick access toolbar(快速工具栏)中

找到insert controls(插入控件),然后就可以插入按钮了。

按钮放置后可以直接连接宏(assign macro),然后以后点击即可运行。

(此方法适合发文字不多的通知,比如我司已于近日支付贵公司XX金额,请注意查收。 但不适合发长信。)


本文主要是提供思路,
知乎是分享知识的平台,不是提供成品的地方,
伸手党的私信我真没工夫回……
  • 4
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: Excel宏脚本VBA是一种非常常用的工具,它可以帮助我们自动化处理Excel文件中的数据和操作。下面是一些常用的VBA脚本示例: 1. 数据处理:VBA可以帮助我们进行数据清洗、排序、过滤和筛选等操作。比如,我们可以使用VBA编写一个脚本来删除重复数据、合并单元格或者按照某个条件筛选数据。 2. 公式的自动化:VBA可以帮助我们自动计算复杂的公式,节省大量的时间和人力。我们可以编写一个脚本,通过VBA在Excel自动应用公式并自动填充公式到指定的区域。 3. 数据导入导出:VBA可以帮助我们批量地导入和导出数据到Excel文件。我们可以使用VBA编写一个脚本,实现从数据库、文本文件或其他数据源中导入数据到Excel,或者将Excel中的数据导出为其他格式,如CSV文件。 4. 自定义对话框:VBA可以帮助我们创建自定义对话框,以便用户输入和验证数据。我们可以编写一个脚本来创建一个自定义的用户界面,通过VBA与用户交互,例如输入参数、选择选项或者从列表中选择数据。 5. 自动化报表生成:VBA可以帮助我们自动生成报表,包括图表、表格和图表等。我们可以编写一个脚本来读取Excel中的数据并进行分析,然后使用VBA自动生成所需的报表。 总之,常用的Excel宏脚本VBA可以帮助我们完成各种繁琐的操作,提高工作效率和准确性。通过编写脚本,我们可以自动化处理数据、应用公式、导入导出数据,创建自定义对话框以及生成报表等。 ### 回答2: Excel宏脚本(VBA)是一种用于自动化和批量处理任务的编程语言。下面是一些常用的Excel宏脚本VBA的功能概述。 1. 数据处理:Excel VBA可以帮助我们自动进行数据清洗、筛选、过滤、排序等操作。我们可以使用循环和条件语句来遍历数据并应用特定的规则。 2. 数据分析:VBA可以进行各种统计分析,例如求和、平均值、中值、最大值、最小值等。通过使用内置函数和自定义函数,我们可以根据需要进行各种计算和分析。 3. 报表生成:通过VBA,我们可以自动创建和修改Excel报表。我们可以根据数据源动态更新报表,添加图表、图形和格式。 4. 自定义菜单和工具栏:我们可以使用VBA创建自己的自定义菜单和工具栏,以便更方便地访问和执行各种功能。 5. 数据导入和导出:通过VBA,我们可以自动将数据从其他文件或数据库导入到Excel中,也可以将Excel数据导出到其他格式(如CSV,TXT)中。 6. 自动化任务:VBA可以帮助我们自动执行一系列任务,比如定时保存,自动发送电子邮件等。通过使用VBA的事件处理程序,我们可以在特定的事件触发时执行特定的操作。 7. 用户界面和交互性:使用VBA,我们可以创建用户友好的用户界面,例如输入框、消息框和按钮,以便用户能够进行各种交互操作。 8. 错误处理:VBA具有强大的错误处理功能,可以在代码执行时捕获和处理错误。我们可以使用错误处理程序来识别和纠正潜在的错误,确保代码的稳定性和可靠性。 总之,Excel宏脚本VBA提供了广泛的功能和灵活性,用户可以根据自己的需求来编写脚本,实现自动化、批量处理和数据分析等任务。 ### 回答3: Excel宏脚本VBA是一种在Excel自动执行任务的编程语言,它能够帮助用户实现自动化操作和提高工作效率。以下是常用的Excel宏脚本VBA功能: 1. 数据处理:VBA可以在Excel中进行各种数据处理操作,如数据排序、筛选、合并、拆分等,方便用户进行大规模数据处理。 2. 数据分析:VBA可以应用于各种数据分析场景,包括计算平均值、总和、最大值、最小值等统计函数,还可以制作图表、生成报表等。 3. 自定义函数:VBA允许用户编写自定义函数,以满足特定需求。通过编写VBA函数,用户可以根据自己的具体需求创建专属函数,并在Excel中调用使用。 4. 自动化操作:VBA可以帮助用户实现自动化操作,如自动填充单元格、自动排序、自动筛选等。用户可以编写VBA代码,以实现一键完成复杂的操作流程。 5. 表单设计:VBA可以对Excel中的表单进行设计,包括设置表单样式、添加控件、编写事件响应等。通过VBA代码,用户可以自定义Excel表单的功能和交互方式。 6. 文件操作:VBA可以进行文件的读取和写入操作,如打开、保存、关闭文件等。用户可以编写VBA代码,在Excel实现对文件的自动化操作。 7. 即时通信:VBA可以与其他办公软件进行通信,如与Outlook集成,实现Excel中直接发送电子邮件。 需要注意的是,VBA的应用范围非常广泛,这里只列举了常见的功能。对于其他领域的需求,用户还可以通过编写和运行VBA代码实现更加复杂和个性化的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值