PROGRAMAR EN VBA MACROS PARA EXCEL: Como Enviar Mail con Tabla en Cuerpo del Mensaje con Excel

Como Enviar Mail con Tabla en Cuerpo del Mensaje con Excel





Me pregunta un suscriptor como enviar una tabla de Excel por Mail, pero en el cuerpo del mensaje no en archivo adjunto; este pos responde ese requerimiento, la macro toma una tabla de Excel y la envía por mail en el cuerpo del mensaje, este ejemplo es otra variante más de las distintas formas que se requiere enviar un mail utilizando Excel mediante Outlook, existen otros ejemplos que menciono a continuación quizás sean de utilidad como enviar mail con hoja Excel en cuerpo del mensaje y PDF adjunto, como enviar mail con Excel con un link, hiperlink, hipervinculo en el cuerpo del mensaje, macro muestra alerta y envía mail a varios destinatarioscomo enviar Mail con Excel utilizando Gmail o Yahoo, si quieres más ejemplos visita enviando mail con Excel.

Desde el final del post se puede descargar el ejemplo en forma gratuita sin ninguna restricción, el código se puede adaptar a cada necesidad, Aporta por favor para sostener el sitio si está dentro de tus posibilidades, desde ya muchas gracias.

Si te estás iniciando en la operación de Excel o requieres afirmar conocimientos, recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

El vídeo verás la macro en acción con una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mail, trabajando con filas, celdas, columnas, rangos y muchos ejemplos más.







  



La macro que envía una tabla de Excel en el cuerpo del mensaje de correo electrónico o mail, apela a una función que permite transformar una tabla de Excel en una tabla Web mediante una codificación html, es algo simple no requiere muchos conocimiento en este lenguaje de programación.

En el post macro que permite crear una tabla html a partir de una tabla de Excel se explicó en detalle como utilizar una macro para crear una tabla WEB, recomiendo echarle un vistazo.

La macro crea el objeto Outlook,ya que utiliza este aplicativo para enviar el mail que es creado con una macro de Excel, luego utiliza este objeto para enviar el mail esto se hace con el código:

Set OApp = CreateObject("Outlook.Application")

Luego se utilizan una seria de variables para crear el body o cuerpo del mensaje que incluye la tabla también, el cuerpo del mail surge de concatenar estas variables; la variables sini guarda el texto o string que hará de mensaje que acompañará a la tabla.

Nos detendremos un poco en la variable stbl, en esta variable se guarda la tabla creada con la función TableHTML, para aprender más acerca de como crear tablas WEB con una macro de Excel, visita el post como crear una tabla Web con macro de Excel.

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Quizá sea de utilidad también

Como enviar mail desde Excel adjuntando PDF


Como enviar mail con archivo Excel y PDF mediante Outlook con Excel

Formulario de VBA para insertar datos

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛



⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

La función TableHTML lo que hace básicamente es mediante un bucle ir recorriendo las filas y las columnas de la tabla e ir concatenando los valores que van surgiendo a medida que se ejecuta el bucle, creando el código html que permite crear una tabla Web.

Posteriormente se concatenan la variables anteriores, obteniendo el cuerpo del mail con la tabla incluida, cuya codificación html esta en la variable sbdy, que es la que en definitiva se utiliza al momento de enviar el mail.

Para enviar el mail se usa la siguiente codificación:

With OMail
.To = Dest
.CC = Cop
.BCC = SCop
.Subject = Asun
'.Attachments.Add rutapdf
'.Display
.HTMLBody = sbdy
.Send
End With

Observe que en .HTMLBody está el nombre de la variable mencionada y es la que contiene todo lo que va a decir el mail incluyendo la tabla que es el propósito del presente ejemplo denominado como enviar mail con una tabla de Excel en el cuerpo del mensaje, a continuación se muestra el código completo, que cada uno puede adaptar a sus necesidades, para mayor entendimiento mira el tutorial creado a tal fin.

Código que se inserta en un módulo

Sub EnviaMail()
Dim a As Worksheet, b As Worksheet
Dim OApp As Object, OMail As Object, sbdy As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
ChDir (ActiveWorkbook.Path)
Dest = Range("A13")
Asun = "Resumen Diciembre"

Set OApp = CreateObject("Outlook.Application")
Set OMail = OApp.CreateItem(0)

sini = "<Div><H3><B>Estimado enviamos resumen de artículos comprados en el período de referencia. </B></H3><br></Div>"
stbl = TableHTML
sbdy = sini & vbNewLine & vbNewLine & vbNewLine & vbNewLine & vbNewLine
sbdy = sbdy & vbNewLine & vbNewLine & stbl & vbNewLine & vbNewLine

With OMail
.To = Dest
.CC = Cop
.BCC = SCop
.Subject = Asun
'.Attachments.Add rutapdf
'.Display
.HTMLBody = sbdy
.Send
End With
Set OMail = Nothing
Set OApp = Nothing

Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox ("El mensaje se envió con éxito"), vbInformation, "AVISO"
End Sub

Function TableHTML() As String
Dim col As Long, fil As Long
canfil = ActiveSheet.UsedRange.Rows.Count
cancol = ActiveSheet.UsedRange.Columns.Count
stable = "<Div><table>"
For f = 1 To canfil
stable = stable & "<tr>"
    For c = 1 To cancol
        stable = stable & "<td>" & Cells(f, c) & " </td>"
    Next c
    stable = stable & "</tr>"
Next f
stable = stable & "</table> <br><br><br><br><br></Div>"
TableHTML = stable
End Function


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends