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

如何在Excel中使用vba在电子邮件中发送特定图表?

您可能知道如何使用VBA代码在Excel中通过Outlook发送电子邮件。 但是,您知道如何将特定工作表中的特定图表附加到电子邮件正文中吗? 本文将向您展示解决此问题的方法。

使用VBA代码在Excel中通过电子邮件发送特定图表


使用VBA代码在Excel中通过电子邮件发送特定图表

请执行以下操作,以在Excel中通过VBA代码在电子邮件中发送特定图表。

1.在工作表中包含要在电子邮件正文中附加的图表,请按 其他 + F11 键打开 Microsoft Visual Basic应用程序 窗口。

2。 在里面 Microsoft Visual Basic应用程序 窗口,请点击 插页 > 模块。 然后将下面的VBA代码复制到“代码”窗口中。

VBA代码:在Excel中通过电子邮件发送特定图表

Sub mailHTMLsend()
'Updated by Extendoffice 2018/3/5
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xStartMsg As String
    Dim xEndMsg As String
    Dim xChartName As String
    Dim xChartPath As String
    Dim xPath As String
    Dim xChart As ChartObject
    On Error Resume Next
    xChartName = Application.InputBox("Please enter the chart name:", "KuTools for Excel", , , , , , 2)
    If xChartName = "" Then Exit Sub
    Set xChart = Sheets("Sheet1").ChartObjects(xChartName) 'Change "Sheet1" to your worksheet name
    If xChart Is Nothing Then Exit Sub
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xStartMsg = "<font size='5' color='black'> Good Day," & "<br> <br>" & "Please find the chart below: " & "<br> <br> </font>"
    xEndMsg = "<font size='4' color='black'> Many Thanks," & "<br> <br> </font>"
    xChartPath = Application.ActiveWorkbook.Path & "\" & Environ("USERNAME") & VBA.Format(VBA.Now(), "DD_MM_YY_HH_MM_SS") & ".bmp"
    xPath = "<p align='Left'><img src=" & "cid:" & Mid(xChartPath, InStrRev(xChartPath, "\") + 1) & """  width=700 height=500 > <br> <br>"
    xChart.Chart.Export xChartPath
    With xOutMail
        .To = "xrr@163.com"
        .Subject = "Add Chart in outlook mail body"
        .Attachments.Add xChartPath
        .HTMLBody = xStartMsg & xPath & xEndMsg
        .Display
    End With
    Kill xChartPath
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

备注:在代码中,请更改收件人的电子邮件地址和相应的电子邮件主题 .To =“ xrr@163.com” 和线 .Subject =“在Outlook邮件正文中添加图表” , Sheet1 是包含您要发送的图表的表格,请更改为您自己的图表。

3。 按 F5 键来运行代码。 在开幕 Kutools for Excel 对话框中,输入要附加在电子邮件正文中的图表的名称,然后单击 OK 按钮。 看截图:

然后会自动创建一封电子邮件,并在电子邮件正文中显示指定的图表,如下图所示。 请单击发送按钮发送此电子邮件。


相关文章:

 

 

 


最佳办公效率工具

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底部

 

 

按评论排序
注释 (13)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
当我输入图表名称时,邮件不会生成对话框,只是关闭,知道我做错了什么吗? 我已经按照每一步
该评论由网站上的主持人最小化
问题是我们无法为图表对象(如表格)设置名称。 您需要传递整数 ID 才能工作。 例如,如果您在“Sheet1”中只有 1 个图表,则尝试在 msgbox 出现时传递值 1。

PS:抱歉英语不好:]
该评论由网站上的主持人最小化
Hola como puede enviar por correo, una tabla dinámica, y no un gráfico
该评论由网站上的主持人最小化
代码中有错误:"\") + 1) & “”“ 宽度=700 高度=50在粗体文本中间的应该是一个单引号

该评论由网站上的主持人最小化
它包括作为附件的图表。 您是否知道如何将其作为图片包含在邮件正文中。 谢谢你,优素福
该评论由网站上的主持人最小化
同样的问题,有解决办法吗?
该评论由网站上的主持人最小化
嗨,J,
代码已更新。 请试一试。 带来不便敬请谅解。


Sub mailHTMLsend()
'Updated by Extendoffice 2018/3/5
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xStartMsg As String
    Dim xEndMsg As String
    Dim xChartName As String
    Dim xChartPath As String
    Dim xPath As String
    Dim xChart As ChartObject
    On Error Resume Next
    xChartName = Application.InputBox("Please enter the chart name:", "KuTools for Excel", , , , , , 2)
    If xChartName = "" Then Exit Sub
    Set xChart = Sheets("Sheet1").ChartObjects(xChartName) 'Change "Sheet1" to your worksheet name
    If xChart Is Nothing Then Exit Sub
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xStartMsg = "<font size='5' color='black'> Good Day," & "<br> <br>" & "Please find the chart below: " & "<br> <br> </font>"
    xEndMsg = "<font size='4' color='black'> Many Thanks," & "<br> <br> </font>"
    xChartPath = Application.ActiveWorkbook.Path & "\" & Environ("USERNAME") & VBA.Format(VBA.Now(), "DD_MM_YY_HH_MM_SS") & ".bmp"
    xPath = "<p align='Left'><img src="/%20&%20"cid:" & Mid(xChartPath, InStrRev(xChartPath, "\") + 1) & """  width=700 height=500 > <br> <br>"
    xChart.Chart.Export xChartPath
    With xOutMail
        .To = "xrr@163.com"
        .Subject = "Add Chart in outlook mail body"
        .Attachments.Add xChartPath
        .HTMLBody = xStartMsg & xPath & xEndMsg
        .Display
    End With
    Kill xChartPath
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub
该评论由网站上的主持人最小化
你好,
mi nic sie nie załącza, czy coś tutaj należałoby wpisać jeszcze?
xPath = "co tutaj trzeba wprowadzić?"
该评论由网站上的主持人最小化
嗨库巴,
请删除 / 标记 <img src="/.
该错误是由站点中的编辑器引起的。
很抱歉给您带来不便。
该评论由网站上的主持人最小化
cześć, pełny kod działa tylko do momentu podglądu komunikatu, przy wysyłce adresat otrzymuje błąd i wykresu nie widać ("Nie można wyświetlić połączonego obrazu. Plik mógł zostać przeniesiony lub usunięty albo zmieniono jego nazwę. Sprawdź czy łącze wskazuje poprawny plik i lokazlizację.") Czy z 是 też tak ktoś miał czy tylko u mnie taki zonk 吗? Prosze o pomoc, tutaj kod, który dotyczy wykresum już tak mało brakuje :)

将 xChartName 调暗为字符串
将 xChartPath 调暗为字符串
将 xPath 调暗为字符串
将 xChart 调暗为 ChartObject
出错时继续下一步
将 wydzialy 调暗为字符串
wydzialy = lista.Cells(3, 75)
xChartName = Application.InputBox(wydzialy, "KuTools for Excel", , , , , , 2) 'Wykres1 '"请输入图表名称:"
如果 xChartName = "" 则退出 Sub
Set xChart = Sheets("Wykresy").ChartObjects(xChartName) '将“Sheet1”更改为您的工作表名称
如果 xChart 什么都不是,则退出 Sub
xChartPath = Application.ActiveWorkbook.Path & "\" & Environ("USERNAME") & VBA.Format(VBA.Now(), "DD_MM_YY_HH_MM_SS") & ".svg" '.bmp '.svg '.svg ma lepsza jakość
x路径 = " “
xChart.Chart.Export xChartPath


将 OutApp 调暗为对象
将 OutMail 作为对象变暗
设置 OutApp = CreateObject("Outlook.Application")
设置 OutMail = OutApp.CreateItem(0)
使用 OutMail
.To = 电子邮件(b)
.CC = emails_dw(b)
.Subject = "XXXX" ' - " & lista.Cells(i, 66)
.Attachments.Add xChartPath
.HTMLBody = "treść" & xPath

设置 .SendUsingAccount = OutApp.Session.Accounts.Item(1)

。显示
结束
杀死 xChartPath
设置 OutMail = 无
设置 OutApp = 无
该评论由网站上的主持人最小化
嗨库巴,
代码已更新。 收件人可以正常查看图表。 请试一试。
备注:在代码中,请更改“图1" 到您自己的图表名称。并在“收件人”字段中指定电子邮件地址。
Sub mailHTMLsend()
'Updated by Extendoffice 20221013
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xStartMsg As String
    Dim xEndMsg As String
    Dim xChartName 'As String
    Dim xChartPath As String
    Dim xPath As String
    Dim xChart As ChartObject
    On Error Resume Next
    xChartName = "Chart 1" 'The name of the chart in the current worksheet you want to send.
    If xChartName = "" Then Exit Sub
    Set xChart = Application.ActiveSheet.ChartObjects(xChartName)
    If xChart Is Nothing Then Exit Sub
    
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    
    xStartMsg = "<font size='5' color='black'> Good Day," & "<br> <br>" & "Please find the chart below: " & "<br> <br> </font>"
    xEndMsg = "<font size='4' color='black'> Many Thanks," & "<br> <br> </font>"
    xChartPath = Application.ActiveWorkbook.Path & "\" & Environ("USERNAME") & VBA.Format(VBA.Now(), "DD_MM_YY_HH_MM_SS") & ".bmp"
    
    xPath = "<p align='Left'><img src="/%20&%20"cid:" & Mid(xChartPath, InStrRev(xChartPath, "\") + 1) & """  width=700 height=500 > <br> <br>"
    
    xChart.Chart.Export xChartPath
    With xOutMail
        .To = "Email Address"
        .Subject = "Add Chart in outlook mail body"
        .Attachments.Add xChartPath
        .HTMLBody = xStartMsg & xPath & xEndMsg
        .Display
    End With
    Kill xChartPath
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub
该评论由网站上的主持人最小化
您好,我想在邮件正文中添加空格,我应该使用哪个关键字。
该评论由网站上的主持人最小化
嗨 pavan chougule,
代码中的以下两行包含电子邮件正文内容。 您可以通过按键盘上的空格键添加空格来手动修改电子邮件正文。
xStartMsg = "<font size='5' color='black'> Good Day," & "<br> <br>" & "Please find the chart below: " & "<br> <br> </font>"
xEndMsg = "<font size='4' color='black'> Many Thanks," & "<br> <br> </font>"
这里还没有评论

关注我们

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