Cómo reemplazar el texto en el cuerpo del mensaje entrante en Outlook 2013 con VBA sin perder el formato

Cómo reemplazar el texto en el cuerpo del mensaje entrante en Outlook 2013 con VBA sin perder el formato

Esta publicaciónanaliza una solución de VBA para reemplazar texto en un correo electrónico entrante con reglas de Outlook.

Utilicé el mismo enfoque para eliminar el texto "Mensaje externo" de la parte superior de los correos electrónicos que recibo (en realidad son 2 líneas de texto que el empleador inserta, lo cual es realmente molesto). Sin embargo, cuando VBA realiza el reemplazo, el correo electrónico resultante también cambia el formato del correo electrónico. El texto se reemplaza según lo previsto (¡excelente!), pero todos los hipervínculos del correo electrónico se expanden y todos los demás formatos HTML se pierden (lo cual no es bueno). Parece que se ha convertido a texto sin formato. ¿Existe alguna manera de reemplazar el texto de los mensajes entrantes en Outlook sin perder el formato HTML?

Aquí está el código que estoy ejecutando:

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

Respuesta1

Mientras leo sobre la creación de correo electrónico HTML con VBA, veo que no usan "MyMail.body", sino "MyMail.HTMLbody".

¡Cambiar el código con esa sintaxis resolvió el 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

información relacionada