如何从excel发送电子邮件中的嵌入图像

时间:2012-04-23 12:58:10

标签: excel outlook

我想在VB的电子邮件(Outlook)(不是附件)的正文中发送Excel图表,有谁知道如何做到这一点?

解决


只是为了在下面添加更多细节来回答 你需要以下(可以做一些改进)。

Sheets(2).ChartObjects(1).Chart.Export "C:\temp\Chart2.png"

...

   .HTMLBody = "<html xmlns:o='urn:schemas-microsoft-com:office:office'" & _
            "xmlns: x = 'urn:schemas-microsoft-com:office:excel'" & _
            "xmlns='http://www.w3.org/TR/REC-html40'> " & _
            "<head></head><body><img src='Chart2.png'></body></html>"

    .Attachments.Add ("C:\temp\Chart2.png")

2 个答案:

答案 0 :(得分:5)

似乎最好的方法是导出图表

Sheets(1).ChartObjects("Chart 1").Chart.Export "C:\Chart1.png"

然后将图片添加到您的邮件 HTML正文中:

.HTMLBody = .HTMLBody & "< img src='c:\folder\filename.png'>"

technetmrexcel确认

答案 1 :(得分:5)

我认为除了上面的解决方案之外,我还要添加我的解决方案,因为如果您感兴趣的话,它会同时使用子文件路径和临时文件路径。

我将代码从here更改为使用临时路径插入图表(他们使用工作簿中的一系列单元格执行相同的操作):

Sub createGraph(nameSheet As String, nameChart As String, nameFile As String)
  ThisWorkbook.Activate
  Worksheets(nameSheet).Activate
  With ThisWorkbook.Worksheets(nameSheet).ChartObjects(nameChart)
    .Activate
    .Chart.Export Environ$("temp") & "\" & nameFile & ".jpg", "JPG"
  End With
End Sub

在HTML正文中:

Call createGraph("Graphs", "Chart 1", "filename")
TempFilePath = Environ$("temp") & "\"
.Attachments.Add TempFilePath & "filename.jpg", olByValue, 0
.HTMLBody = .HTMLBody & "<img src='cid:filename.jpg'>"

通过使用“olByValue,0”,附件将添加到位置0,并且在电子邮件中不作为附件显示。