调整从 Excel 复制到 Outlook 电子邮件的范围图像的大小

问题描述 投票:0回答:1

我将 Excel 中的范围复制到 Outlook 电子邮件中。图片太小了。

.Width
.Height
不会改变图像。

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

我几乎尝试了一切。 Outlook 电子邮件的长宽比仍然处于锁定状态。

如果要复制的图像太大,我想到的另一个选择是在 Outlook 电子邮件中复制多个单独的图像,但我无法弄清楚。

excel vba outlook html-email
1个回答
0
投票

首先,我建议合并您的消息正文内容并保持结果 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>"
© www.soinside.com 2019 - 2024. All rights reserved.