2012-04-23 98 views
6

我想從VB發送電子郵件(Outlook)(不作爲附件)正文中的Excel圖表,任何人都知道如何做到這一點?如何在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") 

回答

5

似乎是最好的辦法是導出圖表

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

然後添加圖像到您的郵件HTML體

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

雙方technetmrexcel

+0

感謝花了大約2天尋找解決方案。 – aronp 2012-04-24 08:00:57

+0

@JMax。當我嘗試將圖像發送到我自己的Outlook地址時,這很有用,但是當我試圖將帶有嵌入式圖像的相同郵件轉發給我的同事時,他們無法看到圖像。當我嘗試將其轉發到我的Gmail帳戶時,也發生了同樣的情況。任何想法可能導致這種情況? – vestland 2016-08-15 10:10:23

+0

@ 123apd在Outlook中轉發電子郵件時,必須手動確認要下載圖像(嘗試先手動完成然後自動化) – JMax 2016-08-17 08:00:25

3

確認我想我在這裏添加我的解決方案,除了上面的一個,因爲它同時使用一個子文件夾和一個臨時文件路徑,以防你感興趣。

我改變了代碼從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,並且不會在電子郵件中作爲附件顯示。

相關問題