所以我想在之后编辑我收到的邮件以添加链接。如果收到的电子邮件是纯文本或HTML,我刚刚编辑了相应的msg.Body或msg.HTMLBody。但是,对于Rich Text,直接编辑RTFBody似乎相当复杂并且不断使我的Outlook崩溃。
我可以编辑Rich Text邮件的HTMLBody,但它会将整个邮件转换为HTML,这会使其更改外观并且无法很好地处理嵌入式附件。
MSDN讨论了MailItem.GetInspector,它返回WordEditor并允许更简单的编辑文档的方式。问题是,我发现的所有例子都是创建新邮件,而不是现有编辑。以下代码: Set objInsp = itm.GetInspector
Set objDoc = objInsp.WordEditor
objDoc.Characters(1).InsertBefore "string"
生成以下错误:运行时错误“4605”,此方法或属性不可用,因为文档已被锁定以进行编辑。
有没有人知道解锁邮件项目以便进行编辑的方法,或者是一种编辑RTFBody的方法?我试图将objDoc.ProtectionType设置为允许写入的东西,但它也说我无法更改文档。
答案 0 :(得分:2)
我遇到了完全相同的问题(Outlook VBA: Replace inline object with text)。
正如在my comment中发布的(在进一步测试后很快将被编辑为更精美的版本),您必须在修改内容之前使用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
可以防止出现错误消息,并且您可能会发现没有明显的原因,您的任何版本都没有任何效果。