Enviar correo electrónico desde Excel

Compatibilidad: Truco compatible con Excel 365Truco compatible con Excel 2016Truco compatible con Excel 2013Truco compatible con Excel 2010Truco compatible con Excel 2007

Microsoft Excel dispone de la opción para enviar correo electrónico, con una copia del libro. Pero podemos crear una macro con la cuenta de correo indicada y con el asunto deseado.

Deberemos de tener instalado un programa gestor de correo electrónico y una cuenta configurada.

Enviar correo electrónico desde Excel
  1. Con Excel abierto.

  2. Pulsar la tecla Alt y mantener pulsada / Pulsar la tecla F11. Mostrará el editor de Visual Basic.

  3. Ir a: Barra de Menú / Insertar / Módulo. Mostrará la ventana del módulo donde escribimos la macro.

  4. Escribir el código de la macro:

  • ENVIAR LIBRO EXCEL. Envía una copia del libro abierto, a la cuenta y con el asunto indicado.

Sub Enviar_Correo_Libro()

On Error Resume Next

ActiveWorkbook.SendMail Recipients:="cuentacorreo@cuentacorreo.com", Subject:="Datos actualizados"

End Sub

Recipients:="cuentacorreo@cuentacorreo.com", correo electrónico del destinatario.
Subject:="Datos actualizados", asunto del correo electrónico.

  • ENVIAR HOJA1. Envía la Hoja1 del libro activo, a la cuenta y con el asunto indicado.

Sub Enviar_Correo_Hoja1()

On Error Resume Next

ActiveWorkbook.Sheets(1).Copy

With ActiveWorkbook

.SendMail Recipients:="cuentacorreo@cuentacorreo.com", Subject:=" Datos actualizados"

.Close SaveChanges:=False

End With

End Sub

Recipients:="cuentacorreo@cuentacorreo.com", correo electrónico del destinatario.
Subject:="Datos actualizados", asunto del correo electrónico.

  • ENVIAR HOJA ACTIVA Envía una copia de la hoja activa, a la cuenta y con el asunto indicado.

Sub Enviar_Correo_HojaActiva()

On Error Resume Next

ActiveSheet.Copy

With ActiveWorkbook

.SendMail Recipients:="cuentacorreo@cuentacorreo.com", Subject:="Datos actualizados"

.Close SaveChanges:=False

End With

End Sub

Recipients:="cuentacorreo@cuentacorreo.com", correo electrónico del destinatario.
Subject:="Datos actualizados", asunto del correo electrónico.

  • ENVIAR EL RANGO DESEADO Envia un rango de celdas en el cuerpo del mensaje de correo, a la cuenta y con el asunto indicado.

Sub Enviar_Correo_Rango()

ActiveSheet.Range(“A1:G10”).Select
ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope

.Introduction = “Texto de entrada para el cuerpo del mensaje.”
.Item.To = “cuentacorreo@cuentacorreo.com”
.Item.Subject = “Datos actualizados”
.Item.Send

End With

End Sub

ActiveSheet.Range(“A1:G10”) Rango deseado para incluir en el cuerpo del mensaje.
.Introduction Texto que acompaña al rango de los datos en el cuerpo del mensaje.
.Item.To Cuenta de correo electrónico del destinatario.
.Item.Subject Asunto del correo.

  

Nivel de dificultad: Experto VBA-Macros Excel Experto VBA – Macros

20 comentarios en “Enviar correo electrónico desde Excel

  • Buenas tardes. Tengo una hoja de cálculo que avisa 45 días antes de que se produzca un evento, poniendo una casilla determinada con fondo rojo. Pero necesitaría que enviara un correo a la persona o personas responsables del evento, con un texto determinado que podría incluir alguna casilla de la hoja. ¿Es posible?

    Muchas gracias

    Luis

  • Hola, regularmente cuando hay un correo en el libro al seleccionarlo me abría de inmediato una pestaña del correo predeterminado para redactar y enviar.
    ¿Como puedo hacer para activar esta función?

    • Hola Nancy,

      Lo puedes realizar con hipervínculo.
      1. Ir a: Cinta de opciones / Pestaña: Insertar / Grupo: Vínculos / Hipervínculos.
      2. Ir a: Vincular a / Clic sobre: Dirección de correo electrónico.
      3. Ir a: Dirección de correo electrónico / Escribir nuestra dirección como remitente.
      4. Ir a: Asunto / Escribir el asunto del correo.
      5. Pulsar el botón Aceptar.

      Al pulsar sobre el hipervínculo del correo, abrirá outlook o el programa predeterminado con el email y el asunto definido.

      Saludos.

  • Buenas tardes,

    teníamos un archivo de excel 2007 que al hacerle doble click, abría un mensaje nuevo de outlook con la tabla que contiene el fichero excel incrustada en el mensaje. El usuario borró el archivo y la copia por error… He estado buscando macros que hagan lo mismo pero no encuentro nada. Pueden ayudarme por favor??

    Muchas gracias de antemano.

    Saludos

    • Hola Xavi,

      Respecto a tus necesidades, faltaría información como: el doble clic donde se aplica, los datos se encuentran en tabla o en rango, etc.

      Hemos incluido en el post un nuevo apartado para enviar un rango de datos.

      Respecto al doble clic se puede aplicar al evento del libro: Workbook_SheetBeforeDoubleClick

      Saludos.

  • Buenas tardes, quisiera saber si es posible vincular el correo en Excel con una cuenta en Gmail la razón es porque tengo creada la Macro para enviar correos masivos pero a los usuarios con cuenta Gmail no se puede enviarles los correos. Que puedo hacer?

    • Hola Mateo,

      Enviar email desde Excel a una cuenta gmail, con macros no presenta ningún problema. Otra cosa es que la hoja tenga un hipervínculo a nuestra cuenta de gmail. En ese caso no hay solución ya que requiere conectarse a la URL con usuario y contraseña de destinatario.

      También puede estar limitado por el administrador del sistema.

      Saludos.

  • Buenas noches,
    He probado la macro para enviar rango y funciona bien. He probado otra similar y también funciona, sin embargo niguna de las que he probado envía el rango con el formato (color de texto, negrita, cursiva, bordes de celda, etc).
    Existe forma de enviar el mismo rango con el formato que tenga?.
    Gracias por la respuesta.
    Saludos

    • Hola Robert,

      El archivo se envía con formato de fuentes y celdas. La cuestión es que si el destinatario recibe los correos como texto sin formato o rtf, en lugar de tipo html (configuración del correo). No mostrará los formatos y sólo el texto.

      Saludos.

  • Buenas noches,
    Quisiera saber como hacer que la macro “ENVIAR HOJA1”, se pudiese adaptar para el envio a varias direcciones de correo.
    Gracias y saludos

  • Buenos dias,
    Tengo un caso similar al que menciona Luis arriba. Tengo una hoja de cálculo para registrar permisos temporales de diferentes usuarios, en la hoja se registra nombre, departamento asignado, fecha de caducidad y correo electronico.
    Necesitaria que se enviara un correo electronico automaticamente 1 mes antes de que caduque el permiso. De modo que coja el correo destinatario de la propia hoja excel.
    Muchas gracias,
    Ignacio

  • He probado la d enviar la hoja 1 del archivo y no lo envia se ejecuta la macros parpadea y no llega el coreo a que se puede atribuir este error?

  • hola esta muy buenas las macros al respecto a las de rango de celdas, puedo manejar las direcciones de correo desde la hoja de una celda

  • Hola buenas me deja enviar el correo perfectamente desde excel, lo único que no puedo es que lo envie con copia a otros destinatarios hay alguna forma de hacer esto.

    Muchas Gracias

    • Hola Eric,

      Hay que reemplazar

      Recipients:=”cuentacorreo@cuentacorreo.com”

      por

      Recipients:=”cuentacorreo1@cuentacorreo.com;cuentacorreo2@cuentacorreo.com;cuentacorreo3@cuentacorreo.com”

      Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *