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