Como substituir o texto no corpo da mensagem recebida no Outlook 2013 pelo VBA sem perder a formatação

Como substituir o texto no corpo da mensagem recebida no Outlook 2013 pelo VBA sem perder a formatação

Esta postagemdiscute uma solução VBA para substituir texto em um e-mail recebido por regras do Outlook.

Usei a mesma abordagem para remover o texto "Mensagem externa" da parte superior dos e-mails que recebo (na verdade, são duas linhas de texto que o empregador insere, o que é realmente irritante). Porém, quando o VBA faz a substituição, o email resultante também altera a formatação do email. O texto é substituído conforme pretendido (ótimo!), mas todos os hiperlinks no e-mail são expandidos e todas as outras formatações HTML são perdidas (o que não é bom). Parece que foi convertido para texto simples. Existe uma maneira de substituir o texto das mensagens recebidas no Outlook sem perder a formatação HTML?

Aqui está o código que estou executando:

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

Responder1

Ao ler sobre a criação de e-mail HTML com VBA, vejo que eles não usam "MyMail.body", mas sim "MyMail.HTMLbody".

Alterar o código com essa sintaxe resolveu o problema!

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

informação relacionada