Эта почтаобсуждается решение VBA для замены текста во входящем письме с помощью правил Outlook.
Я использовал тот же подход, чтобы удалить текст «Внешнее сообщение» из верхней части получаемых мной писем (на самом деле это 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
Читая о создании HTML-электронной почты с помощью VBA, я увидел, что они не используют «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