Как отправить встроенное изображение по электронной почте из 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 ответа:
Я подумал, что добавлю свое решение здесь в дополнение к предыдущему, так как оно использует как 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 и не отображается в сообщении электронной почты как вложение.