So ersetzen Sie Text im Textkörper einer eingehenden Nachricht in Outlook 2013 mit VBA, ohne die Formatierung zu verlieren

So ersetzen Sie Text im Textkörper einer eingehenden Nachricht in Outlook 2013 mit VBA, ohne die Formatierung zu verlieren

Dieser Beitragbespricht eine VBA-Lösung zum Ersetzen von Text in eingehenden E-Mails durch Outlook-Regeln.

Ich habe denselben Ansatz verwendet, um den Text „Externe Nachricht“ oben in den E-Mails zu entfernen, die ich erhalte (es sind tatsächlich zwei Textzeilen, die der Arbeitgeber einfügt, wirklich ärgerlich). Wenn VBA den Ersatz jedoch vornimmt, ändert sich auch die Formatierung der resultierenden E-Mail. Der Text wird wie beabsichtigt ersetzt (großartig!), aber alle Hyperlinks in der E-Mail werden erweitert und alle anderen HTML-Formatierungen gehen verloren (nicht gut). Es sieht so aus, als wäre es in einfachen Text umgewandelt worden. Gibt es eine Möglichkeit, den Text eingehender Nachrichten in Outlook zu ersetzen, ohne die HTML-Formatierung zu verlieren?

Hier ist der Code, den ich ausführe:

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

Antwort1

Beim Lesen über das Erstellen von HTML-E-Mails mit VBA sehe ich, dass nicht „MyMail.body“, sondern „MyMail.HTMLbody“ verwendet wird.

Das Ändern des Codes mit dieser Syntax hat das Problem gelöst!

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

verwandte Informationen