使用Outlook VBA从纯文本更改回复邮件的格式时的行为与使用格式文本/格式/ HTML菜单时的行为不同。
我的原始外发邮件,在点击“回复”按钮后,如下所示:
如果我然后单击HTML按钮,它将保持完全相同,
除了将格式更改为HTML之后,我可以更改字体,大小等。
但是,如果我改为使用
更改宏中的格式...BodyFormat = olFormatHTML
(见底部的完整代码)然后
Times New Roman 10
有没有办法获得UI行为?
宏体如下:
Sub ChangeToTextStyle()
Dim objItem As Object
Dim objMail As MailItem
On Error Resume Next
Set objItem = Application.ActiveInspector.CurrentItem
If Not objItem Is Nothing Then
If objItem.Class = olMail Then
Set objMail = objItem
objMail.BodyFormat = olFormatHTML
End If
End If
End Sub
更新
关注Eugene' answer之后的小问题:
在更改格式之前插入objMail.Save
会保留标题和空白行,但字体会更改为Times New Roman而不是Lucida Console,这是我在撰写和阅读纯文本邮件的选项中设置的。原始文本显示在10pt,光标位于12pt。我如何能
- 将邮件中的所有文本的字体更改为Lucida Console 9.5pt
?
- 将光标处的颜色更改为wdDarkRed
?
答案 0 :(得分:1)
您似乎需要保存邮件项并关闭检查器窗口以将更改应用于UI。 Outlook不会立即反映UI中的更改。有时您需要重新打开消息。
答案 1 :(得分:1)
尝试ExecuteMSO - http://msdn.microsoft.com/en-us/library/office/ff862419(v=office.15).aspx
"适用于内置按钮的控件......"
Sub ChangeToTextStyleHTML()
Dim objItem As Object
Dim objMail As mailitem
On Error Resume Next
Set objItem = Application.ActiveInspector.currentItem
If Not objItem Is Nothing Then
If objItem.Class = olMail Then
ActiveInspector.CommandBars.ExecuteMso ("MessageFormatHtml")
End If
End If
End Sub
还有其他方法,但是当您为快速访问工具栏或功能区添加内置按钮时将鼠标悬停在选区上时,您可以看到MessageFormatHtml(IdMso)作为文本的最后一位。
答案 2 :(得分:0)
否则,您只需将代码替换为以下代码即可将电子邮件设置为html格式:
Sub ChangeToTextStyle()
Dim objItem As Object
Dim objMail As MailItem
On Error Resume Next
Set objItem = Application.ActiveInspector.CurrentItem
If Not objItem Is Nothing Then
If objItem.Class = olMail Then
Set objMail = objItem
.HTMLBody = .HTMLBody
End If
End If
End Sub
这对我有用。
答案 3 :(得分:0)
以下代码适用于我:
objItem.BodyFormat = olFormatHTML