2

後で受信メールを編集してリンクを追加したい。電子メールがプレーン テキストまたは HTML として受信された場合、適切な msg.Body または msg.HTMLBody を編集したところです。ただし、Rich Text の場合、RTFBody を直接編集するとかなり複雑に見え、Outlook がクラッシュし続けます。

リッチ テキスト メールの HTMLBody を編集できますが、メール全体が HTML に変換されるため、外観が変わり、埋め込まれた添付ファイルをうまく処理できません。

MSDN は MailItem.GetInspector について説明しています。これは WordEditor を返し、ドキュメントをより簡単に編集できるようにします。問題は、私が見つけたすべての例は、既存の編集ではなく、作成中の新しいメールです。次のコード:

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

次のエラーが生成されます:実行時エラー '4605'、ドキュメントが編集のためにロックされているため、このメソッドまたはプロパティは使用できません

mailitem のロックを解除して編集できるようにする方法を知っている人はいますか? 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

最後の 2 行が最適かどうかはわかりませんが、うまくいきました。

エラー メッセージが表示されないように注意してOn Error Resume Nextください。また、明確な理由がない限り、どのエディションも効果がないことがわかる場合があります。

于 2014-05-26T17:38:51.467 に答える