6

我想从 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")
4

2 回答 2

5

我想除了上面的解决方案之外,我还想在这里添加我的解决方案,因为它同时使用子文件路径和临时文件路径,以防你感兴趣。

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

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,并且在电子邮件中作为附件不可见。

于 2014-10-15T09:22:10.360 回答
5

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

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

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

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

technetmrexcel确认

于 2012-04-23T13:58:45.367 回答