2

所以我想在之后编辑收到的邮件以添加链接。如果以纯文本或 HTML 格式收到电子邮件,我刚刚编辑了相应的 msg.Body 或 msg.HTMLBody。但是,对于富文本,直接编辑 RTFBody 似乎相当复杂,并且不断使我的 Outlook 崩溃。

我可以编辑富文本邮件的 HTMLBody,但它会将整个邮件转换为 HTML,这会使其外观发生变化,并且无法很好地处理嵌入的附件。

MSDN 谈到 MailItem.GetInspector,它返回 WordEditor 并允许以更简单的方式编辑文档。问题是,我发现的所有示例都是正在创建的新邮件,而不是正在编辑的现有邮件。以下代码:

        Set objInsp = itm.GetInspector
        Set objDoc = objInsp.WordEditor
        objDoc.Characters(1).InsertBefore "string"

生成以下错误:运行时错误“4605”,此方法或属性不可用,因为文档被锁定以进行编辑

有谁知道一种解锁邮件项以允许编辑的方法,或者一种编辑 RTFBody 的方法,它不会崩溃?我尝试将 objDoc.ProtectionType 设置为允许写入的内容,但它也表示我无法更改文档。

4

1 回答 1

2

我面临着完全相同的问题(Outlook VBA:Replace inline object with text)。正如我的评论中所发布的(在进一步测试后,很快将被编辑为更完善的版本),您必须objDoc.UnProtect在修改内容之前使用。我实际使用过

'On Error Resume Next   ' This will prevent the error message... risky!
Dim odProt As Integer
odProt = objDoc.ProtectionType
If (odProt <> wdNoProtection) Then
    Debug.Print "Document is protected with type " & odProt & ", unprotecting temporarily"
    objDoc.UnProtect
End If
' ... Write your code
If (odProt <> wdNoProtection) Then
    Debug.Print "Restoring protection"
    objDoc.Protect (odProt)
End If
objMsg.Display
objMsg.Save

我不确定最后两行是否最好,但它对我有用。

请注意,拥有On Error Resume Next将防止出现错误消息,并且您可能会看到您的任何版本都没有任何效果,而没有明显的原因。

于 2014-05-26T17:38:51.467 回答