Я борюсь с этим (казалось бы) простым шагом в макросе, который я пытаюсь написать. У меня есть объект формы Excel, который я пытаюсь скопировать, затем вставьте в элемент почты Outlook. Объект shape на самом деле является продуктом «инструмента для камеры» Excel. То, что я сделал, было создано диаграммой, которую мне нужно перевернуть на 90 градусов для просмотра. Инструмент камеры делает это простым. Единственная проблема, с которой я столкнулся, - это вставить эту фигуру в объект перспективы. Предложения?Как отправить объект формы из Excel в тело электронной почты?
Вот мой код до сих пор:
Sub emailer()
Dim wb As Workbook
Dim ws As Worksheet
Dim p As Shape
Dim o As Outlook.Application
Dim om As Outlook.MailItem
Dim rec As Outlook.Recipient
Dim recs As Outlook.Recipients
'create the outlook session
Set o = CreateObject("Outlook.Application")
'create the message
Set om = o.CreateItem(olMailItem)
Set recs = om.Recipients
Set rec = recs.Add("[email protected]")
rec.Type = 1
Set wb = ActiveWorkbook
Set ws = ActiveWorkbook.Worksheets("Chart_Pic")
Set p = ws.Shapes("Picture 2")
p.CopyPicture
With om
.SentOnBehalfOfName = "[email protected]"
.Subject = "Subject"
.HTMLBody = "This is a test" & vbCrLf & vbCrLf & [where I want the shape to go]
For Each rec In om.Recipients
rec.Resolve
Next
om.Send
End With
Set o = Nothing
Это не так просто на самом деле встроить изображение в HTML почте. Вы можете преобразовать свою фигуру в изображение и сохранить файл изображения (* .jpg, * .gif, * .png ...) на каком-либо общедоступном файловом сервере и записать ссылку на изображение в свою почту. Или вы конвертируете файл изображения в Base64 и «вставляете» его. Подробности [здесь] (https://sendgrid.com/blog/embedding-images-emails-facts) –
Я ценю ответ. Но почему это так просто, чтобы вручную Ctrl + C «скопировать» изображение из книги Excel и Ctrl + V «вставить» его в новый почтовый элемент в Outlook? – AGryckiewicz
Я не уверен, но за кулисами форма, вероятно, скопирована как структура Windows Metafile (WMF, EMF) как векторная графика в буфер обмена. Оттуда он вставлен в тело письма HTML, преобразуя его в пиксельное изображение и в base64, как описано в моем комментарии. Попробуйте отправить/получить почту и проанализировать содержащийся текст HTML, чтобы узнать подробности. –