如何在Outlook 2016/Office365中设置AppointmentItem的BodyFormat?
解决AppointmentItem转换为纯文本格式的问题
嘿,我明白你的困扰——Outlook的AppointmentItem确实没有像MailItem那样的BodyFormat属性,不过咱们有两种可靠的方法来完成格式转换,不管是Outlook 2016还是Office 365都适用:
方法一:手动转换(单个约会)
如果你只需要处理少数几个约会,直接在Outlook界面操作就行:
- 打开目标约会
- 切换到顶部的格式文本选项卡
- 在「格式」组里,选择纯文本选项
- Outlook会自动将原HTML格式的正文转换为纯文本,保存约会即可
方法二:VBA批量转换(多个约会)
如果需要批量处理大量约会,用VBA脚本效率更高。这里我们借助Word对象来完成HTML到纯文本的转换(因为Outlook本身没有内置的HTML转纯文本函数):
Sub BatchConvertAppointmentsToPlainText() Dim objSelection As Selection Dim objAppt As AppointmentItem Dim objWord As Object Dim objDoc As Object Dim plainTextContent As String Dim i As Integer ' 获取当前选中的所有约会 Set objSelection = Application.ActiveExplorer.Selection ' 检查是否选中了约会 If objSelection.Count = 0 Then MsgBox "请先选中至少一个约会!", vbExclamation Exit Sub End If ' 初始化Word对象(后台运行,不显示界面) Set objWord = CreateObject("Word.Application") objWord.Visible = False ' 遍历每个选中的约会 For i = 1 To objSelection.Count Set objAppt = objSelection.Item(i) ' 只处理有效约会对象 If objAppt.Class = olAppointment Then ' 创建临时Word文档用于格式转换 Set objDoc = objWord.Documents.Add ' 将约会的HTML内容粘贴到Word文档 objDoc.Range.PasteSpecial DataType:=2 ' 对应wdPasteHTML的数值常量 ' 提取纯文本内容,移除Word末尾的多余段落标记 plainTextContent = Left(objDoc.Range.Text, Len(objDoc.Range.Text) - 1) ' 更新约会正文为纯文本,清空HTML和RTF格式确保显示一致 objAppt.Body = plainTextContent objAppt.HTMLBody = "" objAppt.RTFBody = "" ' 保存约会更改 objAppt.Save ' 关闭临时文档,不保存 objDoc.Close SaveChanges:=False End If Next i ' 清理所有对象,释放资源 objWord.Quit Set objDoc = Nothing Set objWord = Nothing Set objAppt = Nothing Set objSelection = Nothing MsgBox "已完成选中约会的纯文本转换!", vbInformation End Sub
代码说明:
- 先获取Outlook中选中的约会列表,确保有可处理的对象
- 借助Word的
PasteSpecial方法,把HTML格式的内容转换成纯文本 - 将转换后的纯文本赋值给约会的
Body属性,同时清空HTMLBody和RTFBody,避免残留格式干扰显示 - 最后保存约会并清理所有对象,释放系统资源
使用注意事项:
- 运行脚本前,需要在Outlook中启用宏(路径:文件 > 选项 > 信任中心 > 信任中心设置 > 宏设置,选择合适的宏启用级别)
- 转换过程中会丢失HTML特有的样式(比如颜色、超链接格式),但核心文本内容会完整保留
内容的提问来源于stack exchange,提问作者Neha Soni
相关产品推荐
相关产品推荐

