You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将含格式的Word文件作为邮件模板批量发送给合作伙伴?

问题原因

你当前代码中使用MSForms.DataObject.GetText(1)从剪贴板获取的是纯文本内容,Word文档里的格式、图片、表格等富文本信息全部丢失,导致收件人收到的邮件只有无格式的纯文本。

解决方案

下面提供两种可行的方法来完整保留Word模板的格式和内容:

方法1:将Word文档转为HTML后读取内容

把Word文档另存为HTML格式,直接读取HTML内容赋值给Outlook邮件的HTMLBody,这种方式能保留大部分格式和内嵌图片:

Dim filePath As String
Dim htmlTempPath As String
filePath = "locally stored file" & partnerName & ".docx"
wordDoc.SaveAs2 filePath

' 生成临时HTML文件路径(使用系统临时文件夹)
htmlTempPath = Environ("TEMP") & "\" & partnerName & "_temp.html"
' 另存为HTML格式(如果未引用Word对象库,用数值10代替wdFormatHTML)
wordDoc.SaveAs2 Filename:=htmlTempPath, FileFormat:=wdFormatHTML

' 读取HTML文件内容
Dim fileSys As Object
Dim htmlContent As String
Set fileSys = CreateObject("Scripting.FileSystemObject")
htmlContent = fileSys.OpenTextFile(htmlTempPath, 1).ReadAll

wordDoc.Close
Kill htmlTempPath ' 删除临时文件,避免占用空间

emailAddress = ws.Cells(i + 1, 12).Value
Set outlookMail = outlookApp.CreateItem(0)
With outlookMail
    .To = emailAddress
    .Subject = "FY25 Reward results for Q3 FY25: " & partnerName
    .HTMLBody = htmlContent
    .Send
End With
Next i

方法2:使用Outlook的WordEditor直接粘贴富文本

利用Outlook邮件内置的Word编辑器,直接从剪贴板粘贴Word的富文本内容,这种方式能100%保留原文档的格式和元素:

Dim filePath As String
filePath = "locally stored file" & partnerName & ".docx"
wordDoc.SaveAs2 filePath

' 复制Word文档的富文本内容到剪贴板
wordDoc.Content.Copy

wordDoc.Close

emailAddress = ws.Cells(i + 1, 12).Value
Set outlookMail = outlookApp.CreateItem(0)
With outlookMail
    .To = emailAddress
    .Subject = "FY25 Reward results for Q3 FY25: " & partnerName
    .Display False ' 隐藏显示邮件窗口(部分Outlook版本支持)
    ' 粘贴剪贴板中的富文本内容到邮件编辑器
    .GetInspector.WordEditor.Content.Paste
    .Send
End With
Next i
注意事项
  • 方法1中,如果Word文档包含外部链接的图片,需要确保图片路径在收件人端可访问,或者提前将图片内嵌到Word文档中。
  • 方法2中,.Display False可以避免邮件窗口弹出,如果你的Outlook版本不支持该参数,可改用Application.ScreenUpdating = False来临时关闭界面更新,发送后再恢复。
  • 若代码中未引用Word对象库,需将wdFormatHTML替换为对应的数值10

内容的提问来源于stack exchange,提问作者Shreeuday Kasat

火山引擎 最新活动