Dim OutApp2 As Object
Dim OutMail2 As Object
Dim table2 As Range
Dim ws2 As Worksheet
Dim tableoosinst As Range
Dim pic2 As Picture
Dim WordDoc2
Set OutApp2 = CreateObject("Outlook.Application")
Set OutMail2 = OutApp2.CreateItem(0)
Set ws2 = ThisWorkbook.Sheets("ISK VS OSA Chart")
Set table2 = ws2.Range("E1:Ab34")
ws2.Activate
table2.Copy
Set pic2 = ws2.Pictures.Paste
pic2.Cut
'create email
On Error Resume Next
Dim name As String
name = slItem2.name
With OutMail2
.Subject = name & " Score Card"
.Display
Set WordDoc2 = OutMail2.GetInspector.WordEditor
With WordDoc2.Range
.pasteandFormat wdChartPicture
.ShapeRange.LockAspectRatio = msoFalse
.Width 100
.Height = 100
.InsertParagraphAfter
End With
.HTMLBody = "Hi Team, <p> Please see the table below" & .HTMLBody
.Save
.Close (olSave)
End With
On Error GoTo 0
Set OutApp = Nothing
Set OutMail = Nothing
我想将 Excel 中的一系列内容复制到 Outlook 电子邮件中,但图像太小。 .width 和 Height 根本不起作用或根本改变图像。我不想手动调整生成的每封电子邮件。
我几乎尝试了所有方法,所以我不确定为什么纵横比仍然锁定在 Outlook 文件上。如果有人知道更简单的方法请告诉我。如果要复制的图像太大,我想到的另一个选择是在 Outlook 电子邮件中复制多个单独的图像,但我也无法弄清楚。
首先,我建议合并您的消息正文内容并保持结果 HTML 标记格式正确:
.HTMLBody = "Hi Team, <p> Please see the table below" & .HTMLBody
这意味着您需要找到
<body>
并在其后面插入文本,但不要将字符串连接在一起。如果您想在邮件正文中获得稳定的结果,您应该为 HTMLBody
属性设置格式良好的 HTML 标记,并且切勿依赖 Outlook 为您处理这部分。
其次,您需要检查原始图像的尺寸 - 是否与粘贴的尺寸相对应。尝试使用不同的参数,例如,您可以尝试传递
wdFormatOriginalFormatting
值,或者仅使用 Paste 方法。
第三,作为替代实现,您可以将图像保存到磁盘,然后将其附加到 Outlook 中的邮件(请参阅
Attachments.Add
)并在邮件正文中使用它。例如:
attachment = MailItem.Attachments.Add("c:\temp\MyPicture.jpg")
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "MyId1")
MailItem.HTMLBody = "<html><body>Test image <img src=""cid:MyId1""></body></html>"