【发布时间】:2019-08-02 00:04:44
【问题描述】:
我的目标是将范围作为图像粘贴到 Outlook 电子邮件中。我在 VBA 编辑器中打开了 MS Excel、Word 和 Outlook 15.0 的引用作为我网络上的最新版本。
我花了好几个小时查看以前回答过的类似问题。
我无法将图像保存为临时文件/使用 html 来引用附件作为解决方案,因为其他用户无权访问特定驱动器,如果他们在自己的机器上运行代码会临时保存该驱动器。
如果我删除电子邮件正文部分,图像会很好地粘贴,但是如果我将两段代码放在一起,则电子邮件正文会覆盖图像。但是,我确实需要将图像粘贴到电子邮件正文中。
Sub CreateEmail()
Dim OlApp As Object
Dim OlMail As Object
Dim ToRecipient As Variant
Dim CcRecipient As Variant
Dim PictureRange As Range
Dim OApp As Object, OMail As Object, signature As String
Set OlApp = CreateObject("Outlook.Application")
Set OlMail = OlApp.createitem(olmailitem)
ExtractName = ActiveWorkbook.Sheets("macros").Range("C11").Value
ToRecipient = ActiveWorkbook.Sheets("macros").Range("K11")
OlMail.Recipients.Add ToRecipient
CC_Check = ActiveWorkbook.Sheets("macros").Range("k10")
If CC_Check = "" Then GoTo Skip_CC
CcRecipient = ActiveWorkbook.Sheets("macros").Range("K10")
OlMail.Recipients.Add CcRecipient
OlMail.Subject = ExtractName
signature = OlMailbody
With OlMail
Set PictureRange = ActiveWorkbook.Sheets("DCTVV").Range("A2:D13")
PictureRange.Copy
OlMail.Display
'This section pastes the image
Dim wordDoc As Word.Document
Set wordDoc = OlMail.GetInspector.WordEditor
wordDoc.Range.PasteAndFormat wdChartPicture
'This section is the email body it needs inserting into
OlMail.body = "Text here," & vbNewLine & vbNewLine & _
"Today's report is attached." & vbNewLine & _
"IMAGE NEEDS TO BE PASTED HERE" _
& vbNewLine & vbNewLine & "More text here" _
& vbNewLine & vbNewLine & "Kind regards,"
.signature
End With
Set OMail = Nothing
Set OApp = Nothing
OlMail.Attachments.Add ("filepath &attachment1")
OlMail.Attachments.Add ("filepath &attachment2")
'OlMail.Attachments.Add ("filepath &attachment3")
OlMail.Display
End Sub
【问题讨论】:
-
查看rangeToHTML。这可能对你更有效
-
由于文件夹的原因,您正在跳过文件的临时保存...我的工作是将图像保存在
ThisWorkbook.Path中,建立电子邮件后,删除所有文件。 .. 他们将始终可以访问他们使用文件的路径。 -
我相信您也可以使用
CopyPicture吗? -
@ScottHoltzman 这种方法会保持条件格式吗?如果没有,那么我将不得不遗憾地粘贴为图像
-
@Nathan_Sav 我复制范围没有问题,只需将其粘贴到电子邮件正文中的确切位置