2015-08-30 8 views
0

Я борюсь с этим (казалось бы) простым шагом в макросе, который я пытаюсь написать. У меня есть объект формы 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 
+0

Это не так просто на самом деле встроить изображение в HTML почте. Вы можете преобразовать свою фигуру в изображение и сохранить файл изображения (* .jpg, * .gif, * .png ...) на каком-либо общедоступном файловом сервере и записать ссылку на изображение в свою почту. Или вы конвертируете файл изображения в Base64 и «вставляете» его. Подробности [здесь] (https://sendgrid.com/blog/embedding-images-emails-facts) –

+0

Я ценю ответ. Но почему это так просто, чтобы вручную Ctrl + C «скопировать» изображение из книги Excel и Ctrl + V «вставить» его в новый почтовый элемент в Outlook? – AGryckiewicz

+0

Я не уверен, но за кулисами форма, вероятно, скопирована как структура Windows Metafile (WMF, EMF) как векторная графика в буфер обмена. Оттуда он вставлен в тело письма HTML, преобразуя его в пиксельное изображение и в base64, как описано в моем комментарии. Попробуйте отправить/получить почту и проанализировать содержащийся текст HTML, чтобы узнать подробности. –

ответ

0

Вы можете использовать буфер обмена для копирования/вставки изображения. Но для этого вам нужен редактор почты Outlook, который может работать с буфером обмена. Например, WordEditor.

Пример:

Sub emailer() 

Set oOlApp = CreateObject("Outlook.Application") 

Set oOlMItem = oOlApp.CreateItem(olMailItem) 

Set oWB = ActiveWorkbook 
Set oWS = ActiveWorkbook.Worksheets("Chart_Pic") 

Set oPic = oWS.Shapes("Picture 2") 
oPic.CopyPicture ' oPic is now in Clipboard 


With oOlMItem 

    .Display 

    .To = "[email protected]" 
    .Subject = "Subject" 

    Set oOlInsp = .GetInspector 
    Set oWdDoc = oOlInsp.WordEditor ' get Word Document from the MailBody 

    Set oWdContent = oWdDoc.Content 
    oWdContent.InsertParagraphBefore 
    Set oWdRng = oWdDoc.Paragraphs(1).Range 
    oWdRng.InsertBefore "This is a test" 
    oWdRng.InsertParagraphAfter 
    oWdRng.InsertParagraphAfter 

    Set oWdRng = oWdDoc.Paragraphs(3).Range 
    oWdRng.Paste ' paste from oPic Clipboard 

    olFormatHTML = 2 
    .BodyFormat = olFormatHTML ' change to HTML 


End With 

End Sub 
Смежные вопросы