Как отправить встроенное изображение по электронной почте из excel


Я хотел бы отправить диаграмму Excel в теле письма (Outlook) (не как вложение) из VB, кто-нибудь знает, как это сделать?

Решено:
Просто, чтобы добавить немного больше деталей, чтобы ответить ниже вам понадобится следующее (Может быть, с некоторыми улучшениями).

Sheets(2).ChartObjects(1).Chart.Export "C:tempChart2.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:tempChart2.png")
2 6

2 ответа:

Кажется, что лучший способ-это экспортировать диаграмму:

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

А затем Добавьте изображение в вашу почту html body:

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

Подтверждено как technet , так и mrexcel

Я подумал, что добавлю свое решение здесь в дополнение к предыдущему, так как оно использует как sub, так и временный путь к файлу, если вам интересно.

Я изменил код с здесь , чтобы вставить диаграмму, используя временный путь (они делают то же самое, используя диапазон ячеек в рабочей книге):

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 и не отображается в сообщении электронной почты как вложение.