Note: The other languages of the website are Google-translated. Back to English

当工作簿保存在Excel中时,如何通过Outlook发送电子邮件?

本文讨论的是在Excel中保存特定工作簿时通过Outlook发送电子邮件。 请按照本教程中的说明进行操作。

使用VBA代码保存工作簿时,通过Outlook发送电子邮件


使用VBA代码保存工作簿时,通过Outlook发送电子邮件

若要在工作簿保存在Excel中时通过Outlook发送电子邮件,请执行以下操作。

1.请首先将工作簿另存为Excel Macro-Enabled Workbook。 请点击 文件 > 另存为。 在 另存为 对话框中,选择一个文件夹来保存工作簿,在“文件名”框中将其命名,然后选择 Excel启用宏的工作簿 来自 保存类型 下拉列表,然后单击 优惠 按钮。 看截图:

2.打开刚才保存的Excel Macro-Enabled Workbook,按 其他 + F11 同时打开 Microsoft Visual Basic应用程序 窗口。

2。 在里面 Microsoft Visual Basic应用程序 窗口,请双击 的ThisWorkbook 在左侧栏中,然后将以下VBA代码复制并粘贴到 的ThisWorkbook 代码窗口。 看截图:

VBA代码:保存工作簿时发送电子邮件

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20181102
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xName As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailItem = xOutApp.CreateItem(0)
    xName = ActiveWorkbook.FullName
    With xMailItem
        .To = "Email Address"
        .CC = ""
        .Subject = "The workbook has been saved"
        .Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
        .Attachments.Add xName
        .Display
       '.send
    End With
    Set xMailItem = Nothing
    Set xOutApp = Nothing
End Sub

备注:请更换 电邮地址 收件人电子邮件地址在一行 .To =“电子邮件地址”根据需要在VBA代码中更改抄送,主题以及正文字段。

3。 按 其他 + Q 同时关闭按键 Microsoft Visual Basic应用程序 窗口。

从现在开始,当您更新并保存工作簿时,将自动创建一封电子邮件,其中附有更新的工作簿。 请点击 发送 按钮发送电子邮件。 看截图:

备注:仅当您将Outlook用作电子邮件程序时,VBA代码才起作用。


相关文章:


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (17)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
如何根据日期范围在 VBA 中自动发送电子邮件通知,而无需查看允许 VBA 发送电子邮件的安全权限弹出窗口。
该评论由网站上的主持人最小化
格拉西亚斯。 咨询:utilizando esta misma rutina, como podría enviar el correo a un correo específico dependiendo el valor de otra celda?
该评论由网站上的主持人最小化
亲爱的,我想问一下如何将功能链接附加到服务器上的某个文件夹,如果我粘贴链接,它会像纯文本一样出现在工作簿中,所以在收到的电子邮件中不起作用,我该怎么办把它变成链接,让收件人可以点击它?
我想用这种方式来代替发送随附的 excel 文件。
谢谢你的建议
该评论由网站上的主持人最小化
罗伯特,
抱歉帮不上忙,欢迎在我们的论坛上发布有关 Excel 的任何问题: https://www.extendoffice.com/forum.html. 您将从我们的专业人士或其他 Excel 粉丝那里获得更多 Excel 支持。
该评论由网站上的主持人最小化
我把它放在电子邮件的正文中,它对我有用......
"文件:///Z:\dir1\dir2\dir3\Test1.xlsm"
该评论由网站上的主持人最小化
嗨,好文章! 我一直试图实现的一件事是将工作簿的当前状态附加到电子邮件中。

目前,它只发送文件的原始状态,不包括用户所做的任何更改。

关于如何使用宏实现这一点的任何想法?
该评论由网站上的主持人最小化
你好,克里斯
代码已更新,问题已解决,请试一试。 感谢您的评论。
该评论由网站上的主持人最小化
你好,克里斯

我偶然遇到了同样的问题。
目前,这些代码用于“beforesave”模块中。
这意味着电子邮件将发送之前保存的电子表格。

还有另一个模块“aftersave”。
我在这个模块中应用了代码,它就像一个魅力。
该评论由网站上的主持人最小化
如何处理 Office 365 文档。 它是自动保存的。
该评论由网站上的主持人最小化
有没有办法让自动电子邮件自动加密?
该评论由网站上的主持人最小化
您好迈克,
抱歉无法帮助解决这个问题。 感谢您的评论。
该评论由网站上的主持人最小化
你好! 非常感谢这个指南 :-) 我想在这个代码中做更多的事情 - 根据国家/地区发送电子邮件。 这意味着我必须使用 if 和 select 创建命令。 对? 我已经从电子邮件中删除了附件。 我想将带有路径的链接添加到文件夹中。 但是当宏运行时,命令无效:-(
我感谢每个帮助如何添加它。
该评论由网站上的主持人最小化
您好 - 如何在电子邮件“抄送”字段中包含单元格数据?
该评论由网站上的主持人最小化
嗨,布伦特,
假设您想在电子邮件“cc”字段中包含单元格 a7 中的值,请尝试以下 VBA。

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

'更新者 Extendoffice 20200628

将 xOutApp 调暗为对象

将 xMailItem 调暗为对象

将 xName 调暗为字符串

出错时继续下一步

设置 xOutApp = CreateObject("Outlook.Application")

设置 xMailItem = xOutApp.CreateItem(0)

xName = ActiveWorkbook.FullName

使用 xMailItem

.To =“电子邮件地址”

.CC = Range("a7").Value


.Subject = "工作簿已保存"

.Body = "Hi," & Chr(13) & Chr(13) & "文件现已更新。"

.Attachments.Add xName

。显示

'。发送

结束

设置 xMailItem = 无

设置 xOutApp = 无

END SUB
该评论由网站上的主持人最小化
亲爱的大家,谁能帮帮我,我是VBA编码的新手,我做了一些修改,但是如果工作簿被保存,我怎么能发送电子邮件,如果用户名不同,比如用户名该站是 glade2 如果工作簿已保存则发送电子邮件,否则不发送。

非常感谢你的支持
该评论由网站上的主持人最小化
嗨弗洛林,
没明白你的意思。 你的用户名代表什么?
该评论由网站上的主持人最小化
嗨,水晶,谢谢您的回复,usernane 是环境 usernane,我已经做到了,我确实使用了 if 函数并退出子。
太谢谢你了。
这里还没有评论
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护