如何使用vba脚本从excel电子表格发送电子邮件

我们的代码模板将帮助您使用协作数据对象(CDO)和VBA脚本从Excel中设置自动电子邮件。...

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

excel-send-email-featured

我们已经介绍了很多优秀的Excel宏,它们可以完成VBA脚本所能完成的同样的事情,但是不需要编程知识。但是有很多高级的事情你只能用VBA来做,比如用你所有的PC信息创建一个电子表格报告。

喜欢把这个教程当作视频看吗?我们掩护你!

为什么从excel发送电子邮件?

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

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

您可能认为从Excel编写电子邮件广播脚本会很复杂。事实并非如此。

本文中的技术将利用excelvba中长期存在的一个特性,即协作数据对象(CDO)。

collaboration data objects (CDO) in excel

CDO是Windows中使用的消息传递组件,从操作系统的早期版本就开始了。它以前被称为CDONTS,后来随着windows2000和XP的出现,被“windows2000的CDO”所取代。此组件已包含在Microsoft Word或Excel中的VBA安装中,可以使用。

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

步骤1:创建vba宏

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

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

adding button in excel

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

add macro for command button

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

通过导航到编辑器中的“工具”>“引用”,添加对CDO库的引用。

adding references in excel

向下滚动列表,直到找到Microsoft CDO for Windows 2000库。标记复选框并单击“确定”。

adding cdo for windows reference

单击“确定”时,记下要粘贴脚本的函数的名称。你以后会需要的。

第2步:设置cdo“from”和“to”字段

为此,首先需要创建邮件对象并设置发送电子邮件所需的所有字段。

请记住,虽然许多字段是可选的,但From和To字段是必需的。

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工作表中的数据直接**到电子邮件中,将邮件的组件拼凑在一起,如上图所示。

步骤3:配置cdo以使用外部**tp

代码的下一部分是将CDO配置为使用任何外部SMTP服务器发送电子邮件。

这个例子是通过Gmail进行的非SSL设置。CDO支持SSL,但这超出了本文的范围。如果您需要使用SSL,Github中的这个高级代码可以提供帮助。

Set CDO_Mail = CreateObject("CDO.Message")On Error GoTo Error_HandlingSet CDO_Config = CreateObject("CDO.Configuration")CDO_Config.Load -1Set SMTP_Config = CDO_Config.FieldsWith SMTP_Config .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/**tpserver") = "**tp.gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/**tpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Item("http://schemas.microsoft.com/cdo/configuration/**tpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/**tpusessl") = True .UpdateEnd WithWith CDO_Mail Set .Configuration = CDO_ConfigEnd With

步骤4:完成cdo设置

既然您已经配置了到SMTP服务器的连接以发送电子邮件,那么您所要做的就是为CDO\u Mail对象填写适当的字段,并发出Send命令。

下面是如何做到这一点:

CDO_Mail.Subject = strSubjectCDO_Mail.From = strFromCDO_Mail.To = strToCDO_Mail.TextBody = strBodyCDO_Mail.CC = strCcCDO_Mail.BCC = strBccCDO_Mail.SendError_Handling:If Err.Description <> "" Then MsgBox Err.Description

当您使用Outlook邮件对象时,不会出现任何弹出框或安全警报消息。

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

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

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

connect command button to script

以下是我在收件箱中收到的信息:

excel email received

注意:如果您收到一个读取传输连接到服务器失败的错误,请确保在下面列出的代码行中输入了正确的用户名、密码、SMTP服务器和端口号以及SMTP配置。

更进一步,使整个过程自动化

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

为此,需要对宏进行更改。转到visualbasic编辑器,复制并粘贴我们放在一起的全部代码。

接下来,从项目层次结构中选择ThisWorkbook。

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

将上面的电子邮件脚本粘贴到私有子工作簿\u Open()中。

每当您打开Excel文件时,这将运行宏。

Paste the email script

接下来,打开任务调度器。

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

create basic task in task scheduler

选择创建基本任务。。。从“操作”菜单中,通过向导进行操作,直到到达“操作”屏幕。

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

select program task scheduler

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

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

完成向导后,您的日程安排就会就绪。

运行一个测试是值得的,方法是将操作安排在未来的几分钟内,然后在确认任务有效后修改它。

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

为此,请打开电子表格并导航到“文件”&gt;“选项”&gt;“信任中心”。

从这里单击“信任中心设置”,然后在下一个屏幕上,将无线电拨号设置为从不显示有关被阻止内容的信息。

让microsoft excel为您工作

microsoftexcel是一个非常强大的工具,但是学习如何最大限度地利用它可能有点吓人。如果你想真正掌握这个软件,你需要熟悉VBA,这不是一个小任务。

然而,结果不言自明。有了一点VBA经验,你很快就能让microsoftexcel自动执行基本任务,让你有更多的时间专注于更紧迫的事情。

用VBA建立专业知识需要时间,但是如果你能坚持下去,你很快就会看到你的劳动成果。

一个很好的开始是我们的权威教程在Excel中使用VBA。一旦你完成了,这个简单的脚本发送电子邮件从Excel将感觉像孩子的游戏。

  • 发表于 2021-03-22 18:44
  • 阅读 ( 232 )
  • 分类:互联网

你可能感兴趣的文章

如何在一分钟内对excel文件进行密码保护

... 电子邮件收件箱,社交媒体帐户,甚至我们的设备本身——现在几乎所有重要的东西都是由某种密码保护的。如果您出于任何原因依赖Excel电子表格,那么您是否也应该在...

  • 发布于 2021-03-12 07:52
  • 阅读 ( 195 )

如何将一个巨大的csv excel电子表格分割成单独的文件

... 例如,如果您通过电子邮件进行营销,您可能会导入包含数百万电子邮件地址的CSV文件。唯一的问题是,如何管理一个包含这么多地址的电子表格?此外,如果有人发送的CSV已经超出了限制...

  • 发布于 2021-03-12 16:05
  • 阅读 ( 711 )

如何将excel数据集成到word文档中

... 一旦您知道如何添加正确的引用,以及如何布局后台VBA代码的语法,那么将microsoftexcel数据集成到microsoftword中就非常容易了。 ...

  • 发布于 2021-03-13 07:56
  • 阅读 ( 244 )

5 excel文档设置您千万不要忘记检查

...们的其他技巧和窍门,比如在Excel中创建下拉列表,了解如何在Excel公式中使用IF语句,以及使用Excel的Goal Seek功能计算数据。 ...

  • 发布于 2021-03-13 08:07
  • 阅读 ( 172 )

如何构建vba宏的自定义excel工具栏

... 下面是如何开始使用自定义工具栏。 ...

  • 发布于 2021-03-13 16:39
  • 阅读 ( 368 )

如何恢复excelvba密码

被密码保护的VBA文档卡住了?下面是如何撬锁。 ...

  • 发布于 2021-03-14 06:34
  • 阅读 ( 211 )

10个简单的excel省时软件你可能已经忘记了

...创建复杂的Excel电子表格,然后不得不向同事解释它们是如何运作的?如果您对公式进行注释,则可以跳过此职责。 ...

  • 发布于 2021-03-14 15:14
  • 阅读 ( 194 )

5个excel宏资源,用于自动化电子表格

...的方法、获取股票报价的方法以及如何使用电子表格发送电子邮件的技巧。 ...

  • 发布于 2021-03-14 21:59
  • 阅读 ( 223 )

如何在excel 2016中录制宏

...可以创建什么。一旦你掌握了它,你甚至可以从Excel发送电子邮件或将Excel数据集成到Word中。 ...

  • 发布于 2021-03-15 08:22
  • 阅读 ( 217 )

excelvba初学者编程教程

... 下面介绍如何在Excel 2016中开始使用VBA。 ...

  • 发布于 2021-03-17 04:40
  • 阅读 ( 228 )