2013-10-22 57 views
2

所以我想編輯我收到的郵件後添加鏈接。如果電子郵件已經以純文本或HTML接收,我已經編輯了相應的msg.Body或msg.HTMLBody。但是,對於Rich Text,直接編輯RTFBody看起來既複雜又不斷崩潰我的Outlook。如何在Outlook VBA中使用WordEditor編輯現有MailItem?

我可以編輯富文本格式郵件的HTMLBody,但隨後整個郵件轉換爲HTML,這使得它改變的外觀和不能處理嵌入附件很好。

MSDN約MailItem.GetInspector,返回WordEditor並允許編輯文檔的更簡單的方法會談。問題是,我發現的所有例子都是新郵件正在創建,而不是正在編輯。下面的代碼:

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

生成以下錯誤:運行時錯誤「4605」,這個方法還是因爲文檔已經鎖定用於編輯屬性不可用。

有誰知道一種方法來解鎖的MailItem允許編輯,或者,一個方法來編輯RTFBody不肚子裏去了?我試圖將objDoc.ProtectionType設置爲允許編寫的東西,但它也表示我無法更改文檔。

+0

對不起,這裏不夠活躍。現在被接受爲答案,非常感謝! – RipperDoc

回答

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將防止錯誤信息,您可能會看到不關你的版本有沒有明顯的理由產生任何影響。

+0

我實際上在objDoc.Protect部件上遇到運行時錯誤4605,說該命令不可用。但爲了我需要的編輯目的,將文檔保護起來似乎很好。 – RipperDoc

+0

@RipperDoc - 感謝您的反饋。可能出現的情況是,在以下Outlook會話中,您的'objDoc'無論如何都是受保護的。只有在特定情況下,您可能會發現您的情況不方便,具體取決於您想要在宏中執行的操作(而且似乎不是您的情況)。 –