如何使用VBA脚本从Excel电子表格发送电子邮件

要从Microsoft Excel发送电子邮件,只需几个简单的脚本。将此功能添加到电子表格中,您就可以真正增强在Excel中可以完成的工作量。

我们介绍了许多出色的Excel宏,它们可以完成VBA脚本可以完成的工作,但是没有需要编程知识。但是,您只能使用VBA进行许多高级操作,例如使用所有PC信息创建电子表格报告。

更喜欢将本教程作为视频观看吗?

为什么要从Excel发送电子邮件?

您可能要从Microsoft Excel内部发送电子邮件的原因有很多。

也许您有工作人员每周更新一次文档或电子表格,并且您希望收到有关这些更新何时完成的电子邮件通知。或者您可能有一个联系人电子表格,并且想要一次向所有联系人发送一封电子邮件。

您可能会认为编写从Excel广播的电子邮件的脚本会变得很复杂。完全不是这种情况。

本文中的技术将利用长期以来在Excel VBA中可用的功能 Collaboration Data Objects (CDO)。

CDO是Windows早期的操作系统中使用的消息传递组件。它以前被称为CDONTS,然后随着Windows 2000和XP的出现,被“ Windows 2000的CDO"所取代。该组件已经包含在Microsoft Word或Excel的VBA安装中,并且可以使用。

使用该组件可以非常轻松地从Windows产品中使用VBA发送电子邮件。在此示例中,您将使用Excel中的CDO组件发送一封电子邮件,该电子邮件将传递来自特定Excel单元的结果。

步骤1:创建VBA宏

第一步是转到“ Excel开发人员"选项卡。

在“开发人员"选项卡中,单击“控件"框中的插入,然后选择一个命令按钮。

将其绘制到工作表中,然后通过单击开发人员功能区中的为其创建一个新的宏。

单击创建按钮,它将打开VBA编辑器。

通过在编辑器中导航至工具>参考,将引用添加到CDO库。

向下滚动列表,直到找到用于Windows 2000库的Microsoft CDO 。选中该复选框,然后单击确定

单击确定时,请记下粘贴脚本的函数的名称。

步骤2:设置CDO“发件人"和“收件人"字段

为此,首先需要创建邮件对象并设置

请记住,尽管许多字段都是可选的,但发件人发件人

Dim CDO_Mail As ObjectDim CDO_Config As ObjectDim SMTP_Config As VariantDim strSubject As StringDim strFrom As StringDim strTo As StringDim strCc As StringDim strBcc As StringDim strBody As StringstrSubject = "Results from Excel Spreadsheet"strFrom = "[email protected]"strTo = "[email protected]"strCc = ""strBcc = ""strBody = "The total results for this quarter are: " & Str(Sheet1.Cells(2, 1))

很酷的事情是,您可以创建任何您想要自定义完整电子邮件的字符串,并将其分配给 strBody 变量。

使用字符串将消息的各个部分拼凑在一起,将Microsoft Excel工作表中的数据直接插入到电子邮件中,就像上面显示的那样。

Step 3: Configure CDO to Use an External SMTP

The next section of code is where you will configure CDO to use any external SMTP server to send the email.

此示例是通过Gmail进行的非SSL设置。 CDO可以使用SSL,但这不在本文讨论范围之内。如果您需要使用SSL,则Github中的高级代码可以提供帮助。

不会出现任何弹出框或安全警报消息,当您诉诸使用Outlook邮件对象时会发生这种情况。

CDO只是将电子邮件放在一起并利用SMTP服务器连接触发消息的详细信息。这是将电子邮件合并到Microsoft Word或Excel VBA脚本中的最简单方法。

要将命令按钮连接到此脚本,请进入代码编辑器,然后单击 Sheet1 查看该工作表的VBA代码。

键入上面粘贴脚本的函数的名称。

这是我在收件箱中收到的消息:

注意:如果您收到以下错误消息:传输无法连接到服务器,请确保您输入了正确的用户名,密码,SMTP服务器,以及使用SMTP_Config 下面列出的代码行中的端口号。

更进一步并实现整个过程自动化

只需按一下按钮就可以从Excel发送电子邮件。但是,您可能希望定期使用此功能,在这种情况下,使流程自动化是很有意义的。

为此,您需要对宏进行更改。转到Visual Basic编辑器,然后复制并粘贴我们编写的整个代码。

下一步,从 Project 层次结构中选择 ThisWorkbook 。<

从代码窗口顶部的两个下拉字段中,选择工作簿,然后从“方法"下拉列表中选择打开

将上面的电子邮件脚本粘贴到 Private Sub Workbook_Open()

这将在您打开Excel文件时运行该宏。

下一步,打开任务计划程序

您将使用此工具要求Windows定期自动打开电子表格,届时您的宏将被启动,并发送

操作菜单中选择创建基本任务…,并逐步完成向导,直到您达到操作屏幕。

选择启动程序,然后单击下一步。

使用浏览按钮在计算机上查找Microsoft Excel的位置,或将路径复制并粘贴到 Program / script中字段。

然后,在添加参数字段中输入Microsoft Excel文档的路径。

完成向导和计划

值得进行一次测试,方法是将操作安排在未来的几分钟内,然后在确认任务正常后对其进行修改。

< strong>注意:您可能需要调整“信任中心"设置以确保宏正常运行。

为此,请打开电子表格并导航到文件 >选项>信任中心

从此处,单击信任中心设置,然后在下一个屏幕上设置广播拨打从不显示有关被阻止内容的信息

制作Micros Excel经常为您服务

Microsoft Excel是一个功能非常强大的工具,但是学习如何充分利用它可能会有些令人生畏。如果您想真正掌握该软件,则需要对VBA感到满意,这并非易事。

然而,结果不言而喻。有了一点VBA经验,您很快就能使Microsoft Excel自动执行基本任务,从而使您有更多的时间专注于更紧迫的事务。

花时间建立VBA的专业知识,但如果坚持下去,您很快就会发现自己的工作成果。

一个很好的起点是我们关于在Excel中使用VBA的权威教程。完成此操作后,这个简单的脚本即可从Excel发送电子邮件,就像玩耍的孩子一样。

标签: 电子邮件提示 Microsoft Excel Microsoft Office提示 编程 Visual Basic编程