vba - 将邮件格式更改为 html 时如何获取 UI 行为?

标签 vba outlook

当我使用 Outlook VBA 从纯文本更改回复邮件格式时的行为与使用格式化文本/格式/HTML 菜单时的行为不同。

我的原始外发邮件,在点击回复按钮后看起来如下:

enter image description here

如果我然后单击 HTML 按钮,它仍然完全相同 exactly same ,

除了将格式更改为 HTML 之后我可以更改字体、大小等。

但是如果我改为使用宏更改格式

...BodyFormat = olFormatHTML

(见底部的完整代码)然后

  • 前导空行被删除
  • 邮件标题被删除
  • 字体更改为 Times New Roman 10

enter image description here

有没有办法获取 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?

最佳答案

您似乎需要保存 邮件项并关闭检查器窗口以将更改应用到 UI。 Outlook 不会立即在 UI 中反射(reflect)更改。有时您需要重新打开邮件。

关于vba - 将邮件格式更改为 html 时如何获取 UI 行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27304906/

相关文章:

Excel VBA 脚本 : Crash on End If

excel - 为什么我不能设置工作簿变量,如果它已经打开 vba

c# - C#/.NET (VS 2008) 到 Outlook (2007) 的问题

php - 使用 PHP 发送 Outlook 2010 电子邮件

vba - 删除 Material list 中的行

Excel vba数组循环在另一个循环内

c - 如何在 VBA(Excel Visual Basic)中从 DLL 接收 "char *d"?

即使获得 Multi-Tenancy 应用程序的管理员同意,Azure AD 用户登录应用程序也会失败

html - Outlook 为小于 15 像素的图像添加边距顶部

excel - 识别列表中两个其他值之间的值