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