我想在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")
答案 0 :(得分:5)
似乎最好的方法是导出图表:
Sheets(1).ChartObjects("Chart 1").Chart.Export "C:\Chart1.png"
然后将图片添加到您的邮件 HTML正文中:
.HTMLBody = .HTMLBody & "< img src='c:\folder\filename.png'>"
答案 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,并且在电子邮件中不作为附件显示。