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

如果在Excel中单击按钮,如何发送电子邮件?

假设您需要通过单击Excel工作表中的按钮来通过Outlook发送电子邮件,该怎么办? 本文将详细介绍一种VBA方法来实现它。

如果单击带有VBA代码的按钮,则发送电子邮件


如果单击带有VBA代码的按钮,则发送电子邮件

如果在Excel工作簿中单击了命令按钮,请执行以下操作以通过Outlook发送电子邮件。

1.通过单击在您的工作表中插入一个命令按钮 开发商 > 插页 > 命令按钮(ActiveX控件)。 看截图:

2.右键单击插入的命令按钮,然后单击 查看代码 从右键单击菜单中,如下图所示。

3.在开幕 Microsoft Visual Basic应用程序 窗口,请使用以下VBA脚本替换“代码”窗口中的原始代码。

VBA代码:如果在Excel中单击了按钮,则发送电子邮件

Private Sub CommandButton1_Click()
'Updated by Extendoffice 2017/9/14
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Body content" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
                  On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "Test email send by button clicking"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

说明:

1)。 请根据需要更改电子邮件正文 邮件正文 代码中的一行。

2)。 更换 电邮地址 收件人电子邮件地址在一行 .To =“电子邮件地址”.

3)。 根据需要指定抄送和密件抄送收件人 .CC =“” .Bcc =“” 部分。

4)。 更改电子邮件主题 .Subject =“测试通过单击按钮发送的电子邮件”.

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

5.通过单击关闭设计模式 开发商 > 设计模式。 看截图:

从现在开始,每次单击“命令”按钮时,都会自动创建一封带有指定收件人,主题和正文的电子邮件。 请通过单击发送电子邮件 发送 按钮。

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

根据Excel中已创建的邮件列表的字段,通过Outlook轻松发送电子邮件:

新的 发电子邮件 实用程序 Kutools for Excel 根据在Excel中创建的邮件列表的字段,帮助通过Outlook发送电子邮件。
立即下载并试用! (30-天免费试用)


相关文章:


最佳办公效率工具

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底部
按评论排序
注释 (73)
3.5中的5评分 · 1评级
该评论由网站上的主持人最小化
嗨,我正在寻找从数据透视表数据发送数据,你能帮忙吗
该评论由网站上的主持人最小化
是否可以编写脚本,以便当您单击按钮时,它会像上面一样将自己附加到电子邮件但也删除按钮? 以便通过电子邮件发送的文件副本上不再有按钮?
该评论由网站上的主持人最小化
在“.Body = xMailBody”下方添加以下内容
.Attachments.Add ActiveWorkbook.FullName
该评论由网站上的主持人最小化
嗨,丹妮。

我按照您所说的添加了该部分,但是带有附加工作簿的电子邮件仍然打开了按钮。
该评论由网站上的主持人最小化
嗨,是否可以进行设置,以便我不必按发送 - 它会自动发送电子邮件????
该评论由网站上的主持人最小化
嗨,
请将上述 VBA 代码中的 .Display 行替换为 .Send 行。
该评论由网站上的主持人最小化
它只生成一封电子邮件,并将继续覆盖内容,而不是打开多个电子邮件草稿。
该评论由网站上的主持人最小化
大家好,首先非常感谢您,这篇文章非常有帮助,适用于附件。 这对我有用,但没有更新保存在您必须点击保存按钮的工作表中。 我希望附件包含当前在 excel 表中的任何内容。

我可以通过使用 excel 内置的电子邮件功能来完成此操作,但我想要一个按钮,因为我需要硬编码特定的电子邮件地址。

总而言之,我想知道:

我想知道是否有办法:在用户打开 excel 工作簿并进行编辑后,按钮是否会保留附件的更新?
该评论由网站上的主持人最小化
美好的一天,
代码已经优化。 请试一试,感谢您的评论。

私有子 CommandButton1_Click()
'更新者 Extendoffice 2017/9/14
将 xOutApp 调暗为对象
将 xOutMail 调暗为对象
将 xMailBody 调暗为字符串
出错时继续下一步
设置 xOutApp = CreateObject("Outlook.Application")
设置 xOutMail = xOutApp.CreateItem(0)
ActiveWorkbook.保存
xMailBody = "正文内容" & vbNewLine & vbNewLine & _
“这是第 1 行” & vbNewLine & _
“这是第 2 行”
出错时继续下一步
使用 xOutMail
.To =“电子邮件地址”
.CC =“”
.BCC =“”
.Subject =“测试通过单击按钮发送的电子邮件”
.Body = xMailBody
.Attachments.Add ActiveWorkbook.FullName
.Display '或使用 .Send
结束
出错时转到 0
设置 xOutMail = 无
设置 xOutApp = 无
END SUB
该评论由网站上的主持人最小化
当我按下按钮时,如何将活动工作簿附加到电子邮件中?
该评论由网站上的主持人最小化
美好的一天,
在“.Body = xMailBody”下方添加以下内容
.Attachments.Add ActiveWorkbook.FullName
该评论由网站上的主持人最小化
Teria como em vez de enviar a planilha, enviar as informações em imagem?
该评论由网站上的主持人最小化
使用此 VBA 代码,我可以在电子邮件正文中引用单元格信息吗? 例如,我如何将单元格值引用到下面的代码?

xMailBody = "正文内容" & vbNewLine & vbNewLine & _
“这是第 1 行” & vbNewLine & _
“这是第 2 行”

此外,使用 (.TO = "email address") 代码。 如何让“电子邮件地址”从旁边列中的单元格中提取电子邮件地址。


谢谢,
该评论由网站上的主持人最小化
是否可以在同一个工作表中添加第二个电子邮件按钮? 当我尝试这样做时,它正在从原始电子邮件按钮连接到代码。 谢谢。
该评论由网站上的主持人最小化
嗨,
您需要为每个按钮分配不同的代码。
该评论由网站上的主持人最小化
使用此 VBA 代码,我可以在电子邮件正文中引用单元格信息吗? 例如,我如何将单元格值引用到下面的代码?

xMailBody = "正文内容" & vbNewLine & vbNewLine & _
“这是第 1 行” & vbNewLine & _
“这是第 2 行”

谢谢,
该评论由网站上的主持人最小化
嗨,格伦,
请应用以下代码。 感谢您的评论。
xMailBody = [B5]
该评论由网站上的主持人最小化
是否可以发送指向文件(位于 SharePoint 上)的超链接,而不是在电子邮件中发送附件?
该评论由网站上的主持人最小化
嗨,劳里,
帮不了你。 感谢您的评论。
该评论由网站上的主持人最小化
我可以用字符串引用主题中单元格中的值吗? 下面的一些变化?

.Subject = "新事件:" & Target.Address = "$B$38"
该评论由网站上的主持人最小化
嗨,阿比,
请将代码更改为 .Subject = "New Event:" & [B38]。
感谢您的评论。
该评论由网站上的主持人最小化
您好,
任何人都可以帮助我满足以下要求吗?
我有一个包含两个下拉列表的 Excel 表。

1个下拉列表-部门列表

2 下拉列表 - 类别

我想要的是当我从列表中选择一个部门和类别时;(例如,如果我在部门中选择“销售”,在类别中选择“月度报告”)

我需要将该工作表的 PDF 版本通过电子邮件发送给销售团队,电子邮件主题是月度报告。

如果我从部门列表中选择“生产”,则电子邮件应该发送给生产中的一组人。

如果您能在这方面帮助我,我将不胜感激

拉西克
该评论由网站上的主持人最小化
嗨拉西克,
抱歉不能帮你。 欢迎在我们的论坛发表任何问题: https://www.extendoffice.com/forum.html 从 Excel 专业人士或其他 Excel 粉丝那里获得更多 Excel 支持。
该评论由网站上的主持人最小化
嗨,

如何让邮件自动从 Outlook 添加我的签名?
该评论由网站上的主持人最小化
你好,约翰,
下面的 VBA 代码可以帮助您解决问题。 谢谢你的评论。

私有子 CommandButton1_Click()
'更新者 Extendoffice 2019/6/26
将 xOutApp 调暗为对象
将 xOutMail 调暗为对象
出错时继续下一步
设置 xOutApp = CreateObject("Outlook.Application")
设置 xOutMail = xOutApp.CreateItem(0)
使用 xOutMail
.Display '或使用 .Send
.To =“电子邮件地址”
.CC =“”
.BCC =“”
.Subject =“测试通过单击按钮发送的电子邮件”
.HTMLBody = "这是用 Excel 发送的测试电子邮件" & "
" & .HTML正文
'。发送
结束
出错时转到 0
设置 xOutMail = 无
设置 xOutApp = 无
END SUB
该评论由网站上的主持人最小化
按下按钮发送电子邮件时,您必须是 excel 用户吗? 还是只有接收电子邮件的人必须是 Outlook 用户?
该评论由网站上的主持人最小化
美好的一天,
由于在 Excel 中单击按钮后需要通过 Outlook 发送电子邮件,因此您必须在计算机中安装 Outlook 才能使其工作。
该评论由网站上的主持人最小化
我想在电子邮件中发送 excel 工作表,但它没有发送。 您如何编写代码以将文档作为电子邮件发送
该评论由网站上的主持人最小化
嗨,马库斯,
下面的 VBA 代码可以帮助您解决问题。

子发送工作表()
'更新 20190626
将 xFile 调暗为字符串
将 xFormat 变暗
将 Wb 调暗为工作簿
将 Wb2 调暗为工作簿
将文件路径变暗为字符串
昏暗的FileName作为字符串
将 OutlookApp 调暗为对象
将 OutlookMail 调暗为对象
出错时继续下一步
Application.ScreenUpdating = False
设置 Wb = Application.ActiveWorkbook
ActiveSheet.复制
设置 Wb2 = Application.ActiveWorkbook
选择案例 Wb.FileFormat
案例 xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
案例 xlOpenXMLWorkbookMacroEnabled:
如果 Wb2.HasVBProject 然后
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
其他
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
结束如果
案例Excel8:
xFile = ".xls"
x格式 = Excel8
案例 xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
最终选择
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(现在,“dd-mmm-yy h-mm-ss”)
设置 OutlookApp = CreateObject("Outlook.Application")
设置 OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
使用 OutlookMail
.To =“ skyyang @extendoffice.com”
.CC =“”
.BCC =“”
.Subject =“ KTE功能”
.Body =“请检查并阅读本文档。”
.Attachments.Add Wb2.FullName
。显示
'。发送
结束
Wb2.关闭
杀死 FilePath & FileName & xFile
设置 OutlookMail = 无
设置 OutlookApp = 无
Application.ScreenUpdating =真
END SUB
该评论由网站上的主持人最小化
当我按下按钮时,如何将活动工作表附加到电子邮件中?
该评论由网站上的主持人最小化
嗨格兰特,
请右键单击按钮并选择查看代码,然后在 Private Sub 和 End Sub 行之间复制以下代码。 希望我能帮上忙。 谢谢你的评论。

将 xFile 调暗为字符串
将 xFormat 变暗
将 Wb 调暗为工作簿
将 Wb2 调暗为工作簿
将文件路径变暗为字符串
昏暗的FileName作为字符串
将 OutlookApp 调暗为对象
将 OutlookMail 调暗为对象
出错时继续下一步
Application.ScreenUpdating = False
设置 Wb = Application.ActiveWorkbook
ActiveSheet.复制
设置 Wb2 = Application.ActiveWorkbook
选择案例 Wb.FileFormat
案例 xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
案例 xlOpenXMLWorkbookMacroEnabled:
如果 Wb2.HasVBProject 然后
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
其他
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
结束如果
案例Excel8:
xFile = ".xls"
x格式 = Excel8
案例 xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
最终选择
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(现在,“dd-mmm-yy h-mm-ss”)
设置 OutlookApp = CreateObject("Outlook.Application")
设置 OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
使用 OutlookMail
.To =“ skyyang @extendoffice.com”
.CC =“”
.BCC =“”
.Subject =“ KTE功能”
.Body =“请检查并阅读本文档。”
.Attachments.Add Wb2.FullName
。显示
'。发送
结束
Wb2.关闭
杀死 FilePath & FileName & xFile
设置 OutlookMail = 无
设置 OutlookApp = 无
Application.ScreenUpdating =真
该评论由网站上的主持人最小化
嗨,

有没有办法在附加到电子邮件时将文件名更改为当前日期?
该评论由网站上的主持人最小化
嗨,

我一直在写一张纸,但我无法完成它。 我希望你能帮助我:)

该文件本身必须是一个 xltm(模板),并且它必须在邮件中附加它自己的工作表。

还有一个自动签名,那我会很高兴的。

在此先感谢/博士。 馕
该评论由网站上的主持人最小化
嗨,我运行了一个包含 80 个个人酒吧帐户的电子表格,并在此页面上使用了 VBA 代码并取得了很大成功。 但是,在电子邮件的正文中,我想在发送时复制并粘贴帐户的特定单元格范围,以便客户可以获得历史记录。 你能帮忙用 VBA 代码吗?
该评论由网站上的主持人最小化
你好! 非常感谢你做的这些。 这是非常棒的帮助。

是否可以通过按按钮而不是整个工作簿来发送活动工作表?

谢谢!
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

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