Enviar correos con condición desde Outlook con Excel

Es muy común que tengas que enviar varios correos dependiendo de una condición, por ejemplo, puede ser un estatus, lo que se puede condicionar desde Excel para ser enviados desde Outlook.

Envío de correos desde Excel.

Cuando tu lista de registros a revisar es considerablemente larga y quieres enviar todos esos correos con un solo clic, entonces es indispensable contar con una macro que nos ayude.

En el siguiente ejemplo te muestro como enviar un correo dependiendo si el estatus del registro está en “Pendiente”.

Suponiendo la siguiente base de datos:

enviar-correo-con-condicion-excel-1

La siguiente macro revisará cada registro y si en la columna “E”, el Estatus es igual a “Pendiente”, entonces enviará un correo personalizado al email que se encuentra en la columna “B”.

La macro es la siguiente:

Sub Enviar_Correos()
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
If Cells(i, "E").Value = "Pendiente" Then
Set dam = CreateObject("outlook.application").createitem(0)
dam.To = Cells(i, "B").Value 'Destinatarios
dam.Subject = "Recordatorio de seguimiento a pendientes"
dam.Body = "Estimado/a : " & Cells(i, "A").Value & vbCr & vbCr & _
"Le recordamos que tiene pendiente " & _
"el siguiente requerimiento : " & Cells(i, "C").Value & vbCr & vbCr & _
"Saludos cordiales"
dam.Send 'El correo se envía en automático
'dam.Display 'El correo se muestra
End If
Next
MsgBox "Correos enviados"
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale clic derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar clic derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Enviar Correos
  10. Aceptar.
  11. Guarda tu archivo como Excel habilitado para macros.
  12. Para ejecutar la macro presiona clic en la imagen.

El resultado será algo como esto:

enviar-correo-con-condicion-excel-2

Descargar archivo de Excel

Guía Laboral 2024
Conozca sus derechos y obligaciones laborales como trabajador o como empleador, y evítese problemas. Ver más.

Forma de citar este artículo (APA):

Gerencie.com. (2021, octubre 13). Enviar correos con condición desde Outlook con Excel [Entrada de blog]. Recuperado de https://www.gerencie.com/enviar-correos-con-condicion-desde-outlook-con-excel.html

Recomendados.

Deje su opinión o su pregunta. Trataremos de darle respuesta.
Su comentario o pregunta será editada automáticaente por el sistema.

Regístrese para informarle cuando se responda su pregunta.

7 comentarios
  1. RENZO ORIHUE diciembre 4 de 2023

    Quiero reenviar correos electrónicos que ingresan a mi cuenta de forma aleatoria a tres correos distintos. ¿Algún ayuda?

    Responder a RENZO ORIHUE
    • Avatar
      Gerencie.com en respuesta a RENZO ORIHUE diciembre 4 de 2023

      No comprendemos exactamente cómo seleccionaría los correos y los destinatarios, pero aquí sugerimos una modificación de la macro original:

      Sub Enviar_Correos()
      Dim destinatarios() As Variant
      Dim i As Integer
      Dim index As Integer
      Dim dam As Object
      Dim cantidadDestinatarios As Integer
      Dim j As Integer

      ‘ Definir la cantidad de destinatarios deseados (en este caso, 3)
      cantidadDestinatarios = 3

      ‘ Definir los destinatarios
      destinatarios = Range(“B2:B” & Range(“B” & Rows.Count).End(xlUp).Row).Value

      ‘ Semilla para generar números aleatorios
      Randomize

      ‘ Bucle principal para enviar correos
      For i = 2 To Range(“A” & Rows.Count).End(xlUp).Row
      If Cells(i, “E”).Value = “Pendiente” Then
      ‘ Bucle para enviar a la cantidad de destinatarios especificada
      For j = 1 To cantidadDestinatarios
      ‘ Generar índice aleatorio
      index = Int((UBound(destinatarios) – LBound(destinatarios) + 1) * Rnd + LBound(destinatarios))

      ‘ Crear objeto de aplicación Outlook y correo
      Set dam = CreateObject(“outlook.application”).CreateItem(0)

      ‘ Asignar destinatario aleatorio
      dam.To = destinatarios(index, 1)

      ‘ Configurar el resto del correo
      dam.Subject = “Recordatorio de seguimiento a pendientes”
      dam.Body = “Estimado/a : ” & Cells(i, “A”).Value & vbCr & vbCr & _
      “Le recordamos que tiene pendiente ” & _
      “el siguiente requerimiento : ” & Cells(i, “C”).Value & vbCr & vbCr & _
      “Saludos cordiales”

      ‘ Enviar el correo
      dam.Send
      Next j
      End If
      Next i

      ‘ Mensaje de confirmación
      MsgBox “Correos enviados”
      End Sub

      Responder a Gerencie.com
  2. danielulloa septiembre 6 de 2023

    Hola, ¿cómo se modificaría el código para enviar el correo con copia a otros correos electrónicos? Agrego las columnas correspondientes a los correos de las personas a quienes se les enviará copia, pero en el código, ¿cómo lo podría realizar?

    Saludos.

    Responder a danielulloa
    • Gbot
      Gbot en respuesta a danielulloa agosto 17 de 2024

      Para enviar correos con copia (CC) o con copia oculta (BCC), se debe utilizar el método add_header() del objeto de correo, que es $mail en este caso.  Por ejemplo:  $mail->addCC(‘[email protected]’); // Para CC  $mail->addBCC(‘[email protected]’); // Para BCC En la función anterior sólo hay que cambiar [email protected] por una variable que contenga el valor correspondiente a cada fila del archivo CSV.

      Responder a Gbot
    • Gbot
      Gbot en respuesta a danielulloa agosto 17 de 2024

      Para enviar un correo con copia (CC) a otros destinatarios, se puede utilizar el método add_header para agregar la cabecera “Cc” al mensaje. A continuación, te muestro cómo podrías modificar tu código para incluir destinatarios en copia:
      “`python
      import smtplib
      from email.mime.multipart import MIMEMultipart
      from email.mime.text import MIMEText

      # Datos de conexión SMTP
      smtp_server = ‘smtp.example.com’
      smtp_port = 587
      username = ‘[email protected]
      password = ‘tu_contraseña’

      # Crear objeto servidor SMTP y conectarse al servidor.
      server = smtplib.SMTP(smtp_server, smtp_port)
      server.starttls()
      server.login(username, password)

      # Leer datos del archivo CSV o Excel aquí…

      for index, row in df.iterrows():
      # Crear el mensaje multipart/mixed
      msg = MIMEMultipart()

      # Configurar los campos del mensaje.
      msg[‘From’] = username # Remitente es siempre tu dirección de correo electrónico.
      msg[‘To’] = row[‘destinatario_email’]

      # Agregar múltiples direcciones en Cc separadas por comas o punto y coma según sea necesario.
      cc_emails=row.get(‘cc_email’, ”) # Cambia esto según tus columnas reales

      if cc_emails:
      msg.add_header(‘Cc’, ‘, ‘.join(cc_emails.split(‘,’)))

      subject= f’Asunto {row[“nombre”]}’

      msg[‘Subject’] = subject

      body_content=f’Hola {row[“nombre”]}, este es su contenido personalizado.’

      msg.attach(MIMEText(body_content, ‘plain’))

      try:
      server.sendmail(msg[‘From’], [msg[‘To’]] + [x.strip() for x in cc_emails.split(‘,’)], msg.as_string())
      except Exception as e:
      print(f’Ocurrió un error al enviar el correo a {row[“destinatario_email”]}: {str(e)}’)

      “`
      En este código he agregado una nueva columna llamada `cc_email` que contiene las direcciones de correo electrónico a las que deseas enviar una copia. Puedes cambiar esta columna según tus necesidades.

      Recuerda que debes separar cada dirección de correo electrónico con una coma (,).

      Responder a Gbot
  3. Ivan Garcia febrero 22 de 2023

    Gracias, me ha funcionado, perfecto.

    ¿Alguien sabe cómo puedo adjuntar una imagen en ese correo?

    Responder a Ivan Garcia
    • Gbot
      Gbot en respuesta a Ivan Garcia agosto 17 de 2024

      Para adjuntar una imagen en un correo electrónico, sigue estos pasos generales que son similares en la mayoría de los servicios de correo como Gmail, Outlook o Yahoo Mail:

      1. **Abre tu servicio de correo**: Inicia sesión en tu cuenta de correo electrónico.

      2. **Redacta un nuevo mensaje**: Haz clic en “Redactar” o “Nuevo mensaje”.

      3. **Adjuntar archivo**:
      – Busca el ícono que representa un clip (generalmente está cerca del área donde escribes el destinatario y el asunto).
      – Haz clic en ese ícono.
      – Se abrirá una ventana para explorar archivos; busca la imagen que deseas adjuntar desde tus carpetas locales y selecciónala.
      – También puedes arrastrar directamente las imágenes desde tu carpeta al cuerpo del email si estás utilizando un cliente web.

      4. **Espera a que se cargue**: Asegúrate de esperar a que se complete la carga antes de enviar el mensaje.

      5. **Envía el correo**: Una vez adjuntada la imagen, completa cualquier otro detalle necesario y haz clic en “Enviar”.

      Recuerda no exceder los límites permitidos por cada proveedor respecto al tamaño máximo permitido para archivos adjuntos, ya sea individualmente o sumando todos los archivos enviados conjuntamente.

      Responder a Gbot
    • Gbot
      Gbot en respuesta a Ivan Garcia agosto 17 de 2024

      Para adjuntar una imagen en un correo electrónico, sigue estos pasos generales que se aplican a la mayoría de los servicios de correo como Gmail, Outlook, Yahoo Mail, etc.: 1. **Abre tu servicio de correo**: Inicia sesión en tu cuenta de correo electrónico. 2. **Redacta un nuevo mensaje**: Haz clic en “Redactar” o “Nuevo mensaje”. Esto abrirá una nueva ventana o sección para escribir tu correo. 3. **Adjunta la imagen**: Busca el icono que representa un clip (📎) o algo similar que indique “adjuntar archivo”. Este ícono suele estar ubicado cerca del área donde escribes el texto del email.
      4. **Selecciona la imagen**: Al hacer clic en el icono de adjunto, se abrirá una ventana exploradora donde podrás buscar y seleccionar la imagen que deseas enviar desde tu computadora o dispositivo móvil.
      5. **Espera a que se cargue**: Una vez seleccionada la imagen, espera unos momentos mientras se carga al mensaje; esto puede tardar dependiendo del tamaño del archivo y velocidad de conexión a Internet.
      6. **Envía el mensaje**: Cuando hayas terminado con todo lo anterior y estés satisfecho con el contenido del mensaje junto con las imágenes adjuntas, haz clic en “Enviar” para enviarlo.

      Recuerda no enviar archivos demasiado grandes ya que algunos proveedores tienen límites máximos sobre los tamaños permitidos para archivos adjuntos.

      Responder a Gbot
  4. clamacobe agosto 25 de 2022

    Buen día. ¿Ustedes venden formatos para liquidaciones de prestaciones sociales y vacaciones?

    [email protected]

    Responder a clamacobe
    • Gbot
      Gbot en respuesta a clamacobe agosto 17 de 2024

      No vendemos ningún formato. Los formatos que tenemos los puede descargar gratis desde esta página.

      Responder a Gbot
  5. clamacobe agosto 25 de 2022

    Buen día.
    Hola, ¿ustedes venden formatos para liquidaciones y prestaciones sociales?
    [email protected]

    Responder a clamacobe
    • Gbot
      Gbot en respuesta a clamacobe agosto 17 de 2024

      No vendemos formatos ni herramientas para liquidar prestaciones sociales. No hemos desarrollado ninguna herramienta en línea para ello, pero puede consultar las que hay disponibles en la web.

      Responder a Gbot
  6. AIR julio 14 de 2022

    Hola, buenas tardes. Si en el ejemplo que ponen en la base de datos el nombre de Daniel apareciera dos o más veces con diferentes conceptos pendientes (factura, nota, pedido, etc.), ¿cómo se podría enviar todo en un solo correo? Es decir, que el resultado fuera algo como esto:

    Para: [email protected]

    Asunto: Requerimiento de seguimiento a pendientes

    Estimado/a Daniel:

    Le recordamos que tiene pendiente el siguiente requerimiento:

    – Factura
    – Pedido
    – Nota

    Saludos cordiales.

    Responder a AIR
    • Gbot
      Gbot en respuesta a AIR agosto 17 de 2024

      Para enviar un solo correo con varios conceptos pendientes para el mismo destinatario, puede utilizar una lista o tabla en el cuerpo del correo. Aquí hay un ejemplo de cómo podría estructurarse:

      “`plaintext
      Para: [email protected]

      Asunto: Requerimiento de seguimiento a pendientes

      Estimado/a Daniel:

      Le recordamos que tiene pendiente los siguientes requerimientos:

      | Concepto | Descripción |
      |———–|————————————-|
      | Factura | Envío de la factura correspondiente.|
      | Pedido | Confirmación del pedido realizado. |
      | Nota | Revisión de la nota enviada anteriormente.|

      Por favor, no dude en contactarnos si necesita más información.

      Saludos cordiales.
      “`

      En este caso, se utiliza una tabla simple (con líneas verticales y guiones) para organizar la información y hacerla más legible. Asegúrese de ajustar el formato según las capacidades del cliente de correo electrónico que esté utilizando, ya que algunos pueden tener limitaciones en cuanto al formato enriquecido o HTML.

      Si está utilizando un lenguaje como Python para automatizar esto (por ejemplo usando smtplib), necesitaría construir el cuerpo del mensaje como una cadena formateada adecuadamente con saltos de línea (`\n`) donde sea necesario.

      ¿Te gustaría ver algún código específico sobre cómo implementar esto?

      Responder a Gbot
    • Gbot
      Gbot en respuesta a AIR agosto 17 de 2024

      Para enviar un solo correo con varios conceptos pendientes para el mismo destinatario, puedes modificar la función `enviar_correo` para que acepte una lista de conceptos y luego formatear el cuerpo del mensaje en consecuencia. Aquí tienes un ejemplo de cómo hacerlo:

      “`python
      import smtplib
      from email.mime.text import MIMEText

      def enviar_correo(destinatario, concepto):
      # Configuración del servidor SMTP
      smtp_server = ‘smtp.gmail.com’
      smtp_port = 587
      username = ‘[email protected]’ # Cambia esto por tu dirección de correo electrónico.
      password = ‘tu_contraseña’ # Cambia esto por tu contraseña.

      # Crear el objeto del mensaje.
      msg = MIMEText(concepto)

      msg[‘Subject’] = “Requerimiento de seguimiento a pendientes”
      msg[‘From’] = username
      msg[‘To’] = destinatario

      try:
      with smtplib.SMTP(smtp_server, smtp_port) as server:
      server.starttls() # Iniciar TLS (Transport Layer Security)
      server.login(username, password) # Autenticarse en el servidor SMTP.
      server.sendmail(msg[‘From’], [msg[‘To’]], msg.as_string()) # Enviar el correo.

      print(f”Correo enviado a {destinatario} con los siguientes conceptos:\n{conceptos}\n”)

      except Exception as e:
      print(f”No se pudo enviar el correo a {destinatario}. Error: {e}”)

      # Lista de correos electrónicos y sus respectivos conceptos pendientes.
      pendientes_por_enviar = {
      [email protected]”: [“Factura”, “Pedido”, “Nota”],
      [email protected]”: [“Informe Técnico”, “Cotización”]
      }

      for destinatario, conceptos in pendientes_por_enviar.items():
      concepto_formateado= “\n”.join(conceptos)  # Formatea la lista como una cadena separada por saltos de línea

      enviar_correo(destinatario, concepto_formateado)

      “`

      ### Descripción del código:

      1. **Pendientes por Enviar:** Se define un diccionario donde cada clave es una dirección de correo electrónico y su valor es una lista con los diferentes conceptos asociados.

      2. **Enviar Correo:** La función `enviar_correo` ahora acepta dos parámetros: `destinatario`, que es la dirección

      Responder a Gbot

Este sitio web utiliza cookies propias y de terceros para ofrecer un mejor servicio. Al seguir navegando acepta su uso.