Enviar correo electrónico html desde el progtwig de correo electrónico de VBA

He escrito un progtwig de correo electrónico para mi organización que maneja muy bien algunas cosas muy especializadas, cosas para las que podría usar Outlook o Gmail. Ahora, el gerente desea enviar un correo electrónico ocasional a nuestra pequeña base de clientes, pero quiero que el cuerpo del correo electrónico se vea profesional y no lo envíe como archivo adjunto. He improvisado un documento html que está presente en todos los navegadores y ha sido validado. Mi problema es que no puedo entender cómo señalar el cuerpo del mensaje en el documento html. Aquí está el código sobresaliente.

Aquí es donde todo está configurado:

Do While mailRs.EOF = False 'Me.AttachDoc = "C:\EmailFolder\CouponForm.pdf" emTo = mailRs.Fields("EmailAddr").Value emFrom = "SportsParkInfo@skokieparks.org" emSubject = Me.Subject emtextBody = Me.TextMessage 

Aquí hay una llamada para enviar el correo electrónico

 Call SendAMessage(emFrom, mailRs.Fields("EmailAddr").Value, _ emSubject, emtextBody, emAttach) 

(Recibí el código para enviar el correo electrónico fuera de la web y funciona muy bien a través de nuestro servidor de correo electrónico).

En lo anterior, antes de la llamada @ emtextBody = Me.TextMessage es donde necesito reemplazar Me.TextMessage con la dirección / cuerpo del documento html. Y el cuadro de mensaje es un cuadro de texto en el formulario ACCESS. No puedo encontrar ningún control en ACCESS que tome html. No puedo usar la ruta al documento html porque eso genera un error. ¿Hay alguna forma de evitar esto?

Si se requiere más información, estaremos encantados de proporcionarla.

Gracias por tu tiempo.

jpl

Use algo como el siguiente código. He incluido elementos para el archivo adjunto, así como el formato html, pero prácticamente todo lo que puede escribir en html también se puede hacer dentro de vba.

 Sub SharePerformance() Dim OutApp As Object Dim OutMail As Object Dim rng As Range Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.createitem(0) '& "\\server\folder" & msg1 = "Team,

" & Range("b5").Value & "

    " & Range("b6").Value & "" msg1 = msg1 & "
    " msg1 = msg1 & Range("b7").Value & "
    " msg1 = msg1 & "" & Range("b9").Value & "

    " msg1 = msg1 & "

    " & "
    " On Error Resume Next ' Change the mail address and subject in the macro before you run it. With OutMail .To = Range("B1").Value .cc = "" .BCC = "" .Subject = Range("B3").Value .HTMLBody = msg1 '.Attachments.Add ActiveWorkbook.FullName '.Attachments.Add ("C:\temp\Chart1.png") '.Attachments.Add ("C:\temp\Chart2.png") .display End With SendKeys "^{ENTER}" On Error GoTo 0 Set OutMail = Nothing Set OutApp = Nothing End Sub

No puedo decir qué código está dentro de la función SendAMessage que está utilizando, pero todos los ejemplos de VBA con los que he trabajado parecen funcionar de la misma manera con el objeto CDO.Message como en este artículo de Knowledge Base de MS KB286431 . En algún momento SendAMessage tendrá una línea que asigna el valor .TextBody del objeto de .TextBody para que sea igual al parámetro emtextBody que emtextBody .

Una solución puede ser copiar su función SendAMessage en una nueva función SendAMessageHTML y reemplazar la línea donde están configurando someMessage.TextBody = emtextBody para que esté configurando someMessage.HTMLBody = emtextBody

Suponiendo que su cuadro de texto tenga texto en la línea de "" podría modificar su función existente para hacer una verificación ingenua como esta:

 if Left(UCase(emtextBody),6) = "" then someMessage.HTMLBody = emtextBody else someMessage.TextBody = emtextBody end if