Outlook 2013 で受信メッセージの本文のテキストを書式を失わずに VBA で置き換える方法

Outlook 2013 で受信メッセージの本文のテキストを書式を失わずに VBA で置き換える方法

この郵便受け受信メール内のテキストを Outlook ルールで置き換える VBA ソリューションについて説明します。

同じ方法を使用して、受信したメールの先頭から「外部メッセージ」テキストを削除しました (実際には雇用主が挿入する 2 行のテキストで、非常に迷惑です)。ただし、VBA で置換を行うと、結果のメールの書式も変更されます。テキストは意図したとおりに置換されます (すばらしい!) が、メール内のすべてのハイパーリンクが展開され、その他の HTML 書式はすべて失われます (よくありません)。プレーン テキストに変換されたようです。Outlook で受信メッセージのテキストを HTML 書式を失うことなく置換する方法はありますか?

私が実行しているコードは次のとおりです:

Sub RemoveExternalText(MyMail As MailItem)
   Dim body As String, re As Object, match As Variant

   body = MyMail.body
   Set re = CreateObject("vbscript.regexp")
   re.Pattern = "External Message"

   For Each match In re.Execute(body)
       body = Replace(body, match.Value, "")
   Next

   MyMail.body = body
   MyMail.Save

End Sub

答え1

VBA を使用して HTML メールを作成する方法について読んでいると、「MyMail.body」ではなく「MyMail.HTMLbody」が使用されていることがわかりました。

その構文でコードを変更すると問題は解決しました。

Sub RemoveExternalText(MyMail As MailItem)
  Dim body As String, re As Object, match As Variant

  body = MyMail.HTMLBody
  Set re = CreateObject("vbscript.regexp")
  re.Pattern = "External Message"

  For Each match In re.Execute(body)
      body = Replace(body, match.Value, "")
  Next

  MyMail.HTMLBody = body
  MyMail.Save

End Sub

関連情報