使用Excel VBA发送带有图表对象的电子邮件 - Office 2013

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Excel VBA发送带有图表对象的电子邮件 - Office 2013相关的知识,希望对你有一定的参考价值。

我使用Excel VBA创建一个从excel中提取信息的电子邮件,然后直接从excel发送电子邮件。但是,我还希望能够在电子邮件正文中包含图表对象。我遇到过一些示例,它们将图表转换为图像,然后使用html将图像嵌入到电子邮件正文中。我想尝试将其保留为excel图表对象,而不是图像。

我还发现了一些代码示例,它们使用“ActiveChart.ChartArea.Copy”并使用sendkeys或其他一些代码行粘贴到图表中,但它似乎也没有工作。唯一粘贴的是来自VBA模块的代码。

如果有人能告诉我我可能缺少什么,我将非常感激。下面的代码显示了我尝试过的内容。我已经根据我已阅读或尝试的不同内容尝试了一些项目,但注释掉了一些似乎不起作用的内容。

Private Sub CommandButton2_Click()

Dim mainWB As Workbook
Dim SendID
Dim CCID
Dim Subject
Dim Body

On Error GoTo Handler

Set myOutlook = GetObject(, "Outlook.Application")
Set myMessage = myOutlook.CreateItem(olMailItem)
Set mainWB = ActiveWorkbook

SendID = mainWB.Sheets("Mail").Range("B1").Value
CCID = mainWB.Sheets("Mail").Range("B2").Value
Subject = mainWB.Sheets("Mail").Range("B3").Value
Body = mainWB.Sheets("Mail").Range("B4").Value

ActiveChart.ChartArea.Copy

With myMessage
    .To = SendID
    If CCID <> "" Then
        .CC = CCID
    End If
    .Subject = Subject
   'ActiveChart.ChartArea.Copy
    .Body = Body
        .Display
   ' Set wEditor = o.activeInspector.WordEditor
   ' wEditor.Application.Selection.Paste

End With

SendKeys "^END"
SendKeys "^(v)", True

Set myOutlook = Nothing
Set myMessage = Nothing

Exit Sub

Handler:
Set myOutlook = CreateObject("Outlook.Application")
Err.Clear
Resume Next

End Sub
答案

电子邮件(在撰写本文时)仅支持图像(或动画gif)。您的问题是我们构建Image-Charts的原因,您可以轻松地将图表嵌入到您的电子邮件中。

只需生成一个URL(请参阅our documentation),将其嵌入到您的电子邮件(<img src="https://image-charts.com/chart?[...]")中即可完成!

奖金,它也支持GIF并且永远有免费等级:)

polar area chart image-charts

(注意:它是已弃用的Google Image Charts的替代品,我是Image-Charts的创建者)

以上是关于使用Excel VBA发送带有图表对象的电子邮件 - Office 2013的主要内容,如果未能解决你的问题,请参考以下文章

在使用 Excel VBA 发送的电子邮件中内联附加图像

Excel EXCEL中怎样用VBA来写图表

在 Excel 中使用 VBA 创建的电子邮件未发送

使用 vba 在 Outlook 电子邮件中添加 Excel 工作表作为附件

使用 VBA 将 Excel 中的图表嵌入到 Powerpoint 中的指定占位符中

使用VBA将Excel指定单元格数据字符串或者图表对象插入到Word模板指定书签处