Enviar rango de celdas por email a varios destinatarios desde Excel
Feliz y exitoso nuevo
En un artículo y video anterior vimos cómo enviar emails desde Excel usando macros, el cual fue bien recibido entre los suscriptores de EXCELeINFO. Desde que se publicó el video he recibido algunos comentarios sobre cómo enviar un rango de celdas como cuerpo de mensaje.
Te cuento que vi un artículo de mi amigo Ismael Romero, MVP de Excel, donde nos regala una macro para usar una herramienta de Excel llamada Enviar a destinatario de correo. Este artículo está basado en ese artículo.
Ver video Enviar rango de celdas por email desde Excel
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Enviar a destinatario de correo
Si deseamos enviar un rango de celdas por email, no sólo está la manera de copiar y el rango y pegarlo en un nuevo correo desde Outlook de Office. Desde Excel, podemos invocar una utilidad que nos permitirá seleccionar un rango de celdas, un destinatario de correo y su respecto asunto, así como una descripción. Será necesario contar con Outlook de Office.
Para mostrar la herramienta:
- Damos clic derecho sobre cualquier pestaña.
- Elegimos la opción Personalizar barra de herramientas de acceso rápido.
- En la sección Comandos disponibles en: elegimos Todos los comandos.
- Elegimos Enviar a destinatario de correo y presionamos el botón Agregar >>.
- Al final presionamos Aceptar y vemos cómo se añade a la parte superior de Excel.
Figura 1. Se enviará el rango seleccionado en el cuerpo del correo.
Enviar mails a varios destinatarios de correo
El ejemplo anterior nos sirve para enviar un rango de celdas a un correo, pero qué tal si necesitamos enviar el mismo rango a varios destinatarios y mejor aún, que ese rango sea dinámico, es decir, que contenga información diferente para cada destinatario.
En la Figura 2 vemos cómo hacemos uso de la función BUSCARV para devolver datos en base a un ID. La información a devolver la tenemos en la hoja llamada Datos.
Figura 2. Devolvemos datos de ventas en base a un ID.
Macro para enviar un rango a varios destinatarios
Como comenté al inicio, este artículo fue basado en uno que publicó Ismael Romero. Con su autorización tomé la macro del artículo y le hice algunas modificaciones.
La macro funciona de a siguiente manera: Mediante un bucle For indicamos un id inicial y no final. Al correr la macro comenzará en el primer id, ese id se pegará en la hoja Resumen en la celda F4, con el BUSCARV devolvemos la información correspondiente a ese id y se envía el rango elegido. Así hasta llegar al último id.
La siguiente macro deberás pegarla en un módulo normal.
'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo ' 'Macro publicada originalmente en: http://excelforo.blogspot.mx/2017/12/vba-enviar-rango-destinatario-de-correo.html ' Sub Enviar_Rango_a_Destinatario_de_correo() 'Seleccionamos el rango de celdas a enviar Select ActiveSheet.Range("A8:F18").Select For i = 1 To 2 'El valor de i se pone en la celda F10 para que con BUSCARV se devuelvan 'los datos correspondientes al ID. ThisWorkbook.Sheets("Resumen").Range("F10").Value = i 'Mostramos la sección para enviar correo. ActiveWorkbook.EnvelopeVisible = True 'Llamamos al envío... With ActiveSheet.MailEnvelope .Item.To = ThisWorkbook.Sheets("Resumen").Range("B11").Value '.Item.cc = "correo1@dominio.com" 'con copia a... '.Item.bcc = "correo2@dominio.com" 'con copia oculta a... .Item.Subject = "Resumen de ventas" .Introduction = "Se adjunta resumen de ventas del año 2017." .Item.Send End With Next i End Sub