【问题标题】:Preserve text format when sending the content of a word document as the body of an email,将 word 文档的内容作为电子邮件正文发送时保留文本格式,
【发布时间】:2015-10-02 19:26:51
【问题描述】:

我正在尝试将 word 文档的内容作为 Outlook 电子邮件的正文发送,但文本格式(粗体、颜色等)在插入电子邮件后会丢失。

我也尝试使用word文档作为信封项,它确实保留了原始格式,但.Display方法在这种情况下不起作用。

下面是我的代码

     bodi = wdDoc3.Content

     With wdApp.ActiveDocument

    .SaveAs ThisWorkbook.Path & "./Past email/Email generated on" & "-" & Format(Date, "dd mmmm yyyy") & ".doc"
    .Close

    End With

 Set Mail_Object = CreateObject("Outlook.Application")
 Set Mail_Single = Mail_Object.CreateItem(0)


With Mail_Single

 .Display

 End With

 signature = Mail_Single.body

 With Mail_Single
 .To = arr2(2, 1)
 .Subject = arr2(1, 1)
 .CC = arr2(3, 1)
 .Bcc = arr2(4, 1)
 .body = bodi & vbNewLine & signature

下面是我在网上找到的使用envelop方法的代码,但是.display或.visible方法不会让outlook窗口弹出。它只是直接发送电子邮件,这不是我想要的。

set itm=wddoc3.mailenvelope.item
with itm
.to=""
.subject=""
.display

此处的 .display 不起作用

end with

我该如何解决这个问题,或者是否有其他方法可以保留文本格式?

【问题讨论】:

  • 能把第一部分的完整代码贴出来吗?
  • @Omar 恐怕有点太长了。基本上它会打开一个word文档并修改它(使用格式),然后我将此文档的内容存储在一个变量“bodi”中以插入到电子邮件正文中。但是格式在这个过程中丢失了。

标签: vba outlook ms-word


【解决方案1】:

MailItem 类的Body 属性返回或设置一个字符串,该字符串表示 Outlook 项目的明文正文。要保留任何格式,您需要使用 HTMLBody 或 Word 编辑器。

Outlook 对象模型为工作项正文提供了三种主要方式:

  1. Body - 表示 Outlook 项目的明文正文的字符串。
  2. HTMLBody - 表示指定项的 HTML 正文的字符串。
  3. Word editor - 正在显示的消息的 Microsoft Word 文档对象模型。 Inspector 类的 WordEditor 属性从 Word 对象模型返回 Document 类的一个实例,您可以使用它来设置消息正文。

您可以在Chapter 17: Working with Item Bodies 中阅读有关所有这些方式的更多信息。

因此,您可以轻松使用 Word 编辑器设置邮件正文,而不会丢失任何格式。

【讨论】:

  • 谢谢!我想我可以先复制word文档的内容,然后使用.WordEditor方法将其粘贴到Mail项中,格式将被保留。
猜你喜欢
  • 1970-01-01
  • 2016-06-07
  • 2019-08-29
  • 2020-11-09
  • 1970-01-01
  • 2018-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多