Macro Excel para Enviar Email Automáticamente (3 Ejemplos Adecuados)

  • Compartir Este
Hugh West

Este tutorial ilustrará cómo utilizar la macro de Excel para enviar un correo electrónico de forma automática. Podemos configurar nuestra función de correo utilizando VBA Por lo tanto, utilizando las macros VBA macro podemos enviar un correo electrónico a varios usuarios al mismo tiempo. Debemos tener Outlook instalado en nuestro dispositivo para enviar correo electrónico automáticamente con una macro. Dado que el código que insertaremos utilizará Outlook para enviar correos electrónicos a los destinatarios.

Descargar el cuaderno de prácticas

Puede descargar el cuaderno de prácticas desde aquí.

Enviar correo electrónico automáticamente.xlsm

3 Ejemplos Adecuados de Macro Excel para Enviar Email Automáticamente

A lo largo de este artículo, demostraremos 3 ejemplos adecuados de la utilización de macros de Excel para enviar un correo electrónico automáticamente a los destinatarios. Antes de empezar a ilustrar el ejemplo tenemos que arreglar una cosa en nuestra hoja de Excel. Complete los siguientes pasos antes de aplicar macro para enviar correo electrónico automáticamente.

PASOS:

  • En primer lugar, desde su conjunto de datos, vaya a la pestaña Desarrollador Seleccione la opción Visual Basic .

  • A continuación, vaya a la página Herramienta y seleccione la opción Referencias .

  • Un nuevo cuadro de diálogo llamado ' Referencias - VBAProject se abrirá.
  • Por último, marque la opción ' Biblioteca de objetos de Microsoft Office 16.0 y haga clic en OK .

1. Aplicar Excel VBA Macro para enviar correo electrónico automáticamente basado en el valor de la celda

En primer lugar, aplicaremos el excel VBA para enviar un correo electrónico automáticamente en función del valor de una celda concreta de nuestro conjunto de datos. Para ilustrar este ejemplo utilizaremos el siguiente conjunto de datos. Escribiremos un código que enviará un correo electrónico automáticamente si el valor de la celda en la celda D6 es mayor que 400 .

Veamos los pasos para realizar esta acción.

PASOS:

  • Para empezar, derecha - haga clic en en la hoja ' Basado en la célula '.
  • Además, seleccione la opción ' Ver Código '.

  • La acción anterior abrirá un espacio en blanco VBA Otra forma de abrir esa ventana de código es pulsar Alt + F11 .
  • Además, escriba el siguiente código en esa ventana de código:
 Dim rg As Range Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Cells.Count> 1 Then Exit Sub Set rg = Intersect(Range("D6"), Target) If rg Is Nothing Then Exit Sub If IsNumeric(Target.Value) And Target.Value> 400 Then Call send_mail_outlook End If End Sub send_mail_outlook() Dim z As Object Dim y As Object Dim b As String Set z =CreateObject("Outlook.Application") Set y = z.CreateItem(0) b = "¡Hola!" & vbNewLine & vbNewLine & _ "Espero que estés bien" & vbNewLine & _ "Visita nuestro sitio Exceldemy" On Error Resume Next With y .To = "Dirección" .cc = "" .BCC = "" .Subject = "enviar correo basado en el valor de la celda" .Body = b .Display End With On Error GoTo 0 Set y = Nada Set z = Nada End Sub 
  • A continuación, pulse el botón Ejecutar o pulse el botón F5 para ejecutar el código.

  • Un nuevo cuadro de diálogo llamado Macros aparecerá.
  • Después, en el Macro Nombre seleccione la macro ' send_mail_outlook '.
  • Ahora haga clic en el botón Ejecutar botón.

  • Por último, a partir de ahora cuando el valor de la celda en la celda D6> 400 un correo electrónico en Outlook se generará automáticamente con destinatarios específicos. Sólo tenemos que hacer clic en el botón Enviar para enviar el correo electrónico.

Más información: Enviar Emails Automáticamente desde Excel Basado en el Contenido de las Celdas (2 Métodos)

2. Envío automático de correo electrónico basado en la fecha de vencimiento con la macro VBA

En el segundo método, utilizaremos el programa Excel VBA para enviar un correo electrónico automáticamente si se acerca la fecha de vencimiento de algún proyecto. Es algo así como un recordatorio. Para ilustrar este ejemplo utilizamos el siguiente conjunto de datos, que contiene correos electrónicos de diferentes vendedores, mensajes y la fecha de vencimiento de su proyecto.

Siga los siguientes pasos para realizar este método.

PASOS:

  • En primer lugar, haga clic con el botón derecho del ratón en la hoja Fecha .
  • A continuación, seleccione la opción ' Ver Código '.

  • Abre un espacio en blanco VBA de la hoja de cálculo activa. También podemos pulsar Alt + F11 para obtener esa ventana de código.
  • A continuación, inserta el siguiente código en esa ventana de código:
 Public Sub Based_on_Date() Dim aRgDate As Range Dim aRgSend As Range Dim aRgText As Range Dim aRgDone As Range Dim aOutApp As Object Dim aMailItem As Object Dim aLastRow As Long Dim CrLf As String Dim aMailBody As String Dim zRgDateVal As String Dim zRgSendVal As String Dim aMailSubject As String Dim j As Long On Error Resume Next Set aRgDate = Application.InputBox("select the column of duedate:", _ "Send Mail Base on Date", , , , , 8) If aRgDate Is Nothing Then Exit Sub Set aRgSend = Application.InputBox("seleccionar la columna de destinatarios del correo electrónico:", _ "Send Mail Base on Date", , , , 8) If aRgSend Is Nothing Then Exit Sub Set aRgText = Application.InputBox("seleccionar la columna de contenido del correo electrónico:", _ "Send Mail Base on Date", , , , , 8) If aRgText Is Nothing Then Exit Sub aLastRow =aRgDate.Rows.Count Set aRgDate = aRgDate(1) Set aRgSend = aRgSend(1) Set aRgText = aRgText(1) Set aOutApp = CreateObject("Outlook.Application") For j = 1 To aLastRow zRgDateVal = "" zRgDateVal = aRgDate.Offset(j - 1).Value If zRgDateVal "" Then If CDate(zRgDateVal) - Date 0 Then zRgSendVal = aRgSend.Offset(j - 1).Value aMailSubject = aRgText.Offset(j - 1).Value & " on " & zRgDateVal CrLf= " 

"aMailBody = "" aMailBody = aMailBody & "Hola " & zRgSendVal & CrLf aMailBody = aMailBody & "Mensaje: " & aRgText.Offset(j - 1).Value & CrLf aMailBody = aMailBody & "" Set aMailItem = aOutApp.CreateItem(0) With aMailItem .Subject = aMailSubject .To = zRgSendVal .HTMLBody = aMailBody .Display End With Set aMailItem = Nada End If End If Next Set aOutApp = Nada EndSub

  • Ahora, utilice el Ejecutar o el botón F5 para ejecutar el código.

  • Aparecerá un nuevo cuadro de diálogo.
  • A continuación, en el campo de entrada de ese cuadro de diálogo, seleccione el intervalo de columnas de la fecha de vencimiento D$5:$D$9 A continuación, haga clic en OK .

  • Aparecerá otro cuadro de diálogo.
  • Además, en el campo de entrada seleccione el rango de columnas B$5:$B$9 que contiene las direcciones de correo electrónico y haga clic en OK .

  • Además, aparecerá una ventana más. Seleccione el intervalo de mensajes $C$5:$C$9 en el campo de entrada de la ventana emergente.

  • Al final, podemos ver resultados como los de la siguiente imagen. Obtenemos 3 correos electrónicos que se crean automáticamente en 3 diferentes ventanas de Outlook Esto no creará correo para las dos primeras direcciones de correo electrónico. Porque la fecha de vencimiento de esos dos proyectos ya ha pasado.

Más información: Cómo Enviar Email Automáticamente desde Excel Basado en la Fecha

Lecturas similares

  • [Solucionado]: Compartir libro no se muestra en Excel (con pasos fáciles)
  • Cómo enviar correo electrónico desde una lista de Excel (2 formas efectivas)
  • Cómo enviar una hoja de cálculo Excel editable por correo electrónico (3 métodos rápidos)
  • Macro para Enviar Email desde Excel (5 Ejemplos Adecuados)
  • Macro para Enviar Email desde Excel con Cuerpo (3 Casos Útiles)

3. Utilizar macro de Excel para enviar correos electrónicos automáticamente con archivos adjuntos

En el último ejemplo, veremos como podemos desarrollar una macro excel para enviar un email automáticamente con archivos adjuntos. Supongamos que tenemos un archivo adjunto en la siguiente imagen. Queremos enviar este archivo adjunto a través de un email usando excel VBA Para ello necesitamos la ruta de este archivo excel. Aquí están los pasos para ello:

  • Seleccione el archivo ' Anexo.xlsx ' '.
  • Haga clic en la opción ' Copiar ruta '.

  • Por lo tanto, la ruta del archivo que obtenemos:
E:\Exceldemy\Attachment.xlsx

Insertaremos esta ruta en nuestro código de macro para enviar este archivo por correo electrónico. Siga los siguientes pasos para hacerlo.

PASOS:

  • En primer lugar, vaya a la página Desarrollador y seleccione la opción Visual Basic .

  • Una nueva ventana llamada ' Proyecto - Se abrirá VBAProject '.
  • En segundo lugar, haga clic con el botón derecho del ratón en en el nombre de la hoja.
  • A continuación, seleccione Inserte > Módulo .

  • El comando anterior abrirá un espacio en blanco VBA
  • En tercer lugar, escriba el siguiente código en ese Módulo:
 Sub send_Email_complete() Dim MyOutlook As Object Set MyOutlook = CreateObject("Outlook.Application") Dim MyMail As Object Set MyMail = MyOutlook.CreateItem(olMailItem) MyMail.To = "[email protected]" MyMail.cc = "[email protected]" MyMail.BCC = "[email protected]" MyMail.Subject = "Enviando Email con VBA" MyMail.Body = "Este es un Email de Muestra" Attached_File = "E:\Exceldemy\Attachment.xlsx"MyMail.Attachments.Add Attached_File MyMail.send End Sub 
  • A continuación, pulse el botón F5 o pulse la tecla Ejecutar para ejecutar el código.

  • Por último, el código enviará el archivo adjunto a los correos electrónicos proporcionados en el código. El código envía correos electrónicos mediante Outlook Entonces, haga clic en el botón Permitir para que Outlook envía el archivo adjunto a los correos electrónicos indicados.

Más información: Cómo aplicar una macro para enviar un correo electrónico desde Excel con un archivo adjunto

Conclusión

En conclusión, este artículo muestra 3 ejemplos de uso de excel VBA para enviar el correo automáticamente. Descarga la hoja de trabajo de ejemplo que aparece en este artículo para poner a prueba tus habilidades. Si tienes alguna pregunta, deja un comentario en el cuadro de abajo. Nuestro equipo intentará responder a tu mensaje lo antes posible. Sigue atento a más inventivas Microsoft Excel soluciones en el futuro.

Hugh West es un capacitador y analista de Excel altamente experimentado con más de 10 años de experiencia en la industria. Tiene una Licenciatura en Contabilidad y Finanzas y una Maestría en Administración de Empresas. Hugh tiene una pasión por la enseñanza y ha desarrollado un enfoque de enseñanza único que es fácil de seguir y comprender. Su conocimiento experto de Excel ha ayudado a miles de estudiantes y profesionales en todo el mundo a mejorar sus habilidades y sobresalir en sus carreras. A través de su blog, Hugh comparte su conocimiento con el mundo, ofreciendo tutoriales gratuitos de Excel y capacitación en línea para ayudar a las personas y empresas a alcanzar su máximo potencial.