jueves, 7 de diciembre de 2017

VBA: Enviar Rango a Destinatario de correo

Una opción ya en desuso de Excel es el envío a destinatario de correo, que permite adjuntar un rango de celdas seleccionado en el cuerpo de un email, gestionado todo desde nuestra aplicación Excel favorita.

Para las últimas versiones deberemos sacar a la luz el enterrado botón que habilita esta posibilidad;
así pues desde el desplegable de la barra de herramientas de acceso rápido > Más comandos... > Todos los comandos > Enviar a destinatario de correo

VBA: Enviar Rango a Destinatario de correo



Una vez sacado el botón, podemos ejecutarlo, lo que nos llevará a la siguiente ventana... desde donde controlaremos el destinatario/s, el asunto o una breve introducción (en sustitución del típico cuerpo de un email).

VBA: Enviar Rango a Destinatario de correo



Accediendo a Outlook podremos comprobar el envío de dicho email:

VBA: Enviar Rango a Destinatario de correo



Este mismo proceso lo podemos replicar desde nuestra programación y así poder automatizarlo...

Así pues añadimos la siguiente macro dentro de un módulo estándar de nuestro proyecto de VB:

Sub Enviar_Rango_a_Destinatario_de_correo()
   
'Seleccionamos el rango de celdas a enviar Select
ActiveSheet.Range("A1:B5").Select

' Show the envelope on the ActiveWorkbook.
ActiveWorkbook.EnvelopeVisible = True

'Llamamos al envío...
With ActiveSheet.MailEnvelope
   .Item.To = "excelforo@excelforo.com"
   '.Item.cc = "cursos@excelforo.com"            'con copia a...
   '.Item.bcc = "consultoria@excelforo.com"      'con copia oculta a...
   .Item.Subject = "Asunto: Envío rango de Excel por email"
   .Introduction = "Ejemplo de rango adjunto con formato..."
   .Item.Send
End With
End Sub



Al ejecutarlo verificaremos que el resultado es equivalente...

4 comentarios:

  1. Muchas gracias por esta entrada Ismael! Estoy intentando ejecutar esta macro pero me da el siguiente error: "class does not support Automation or does not support expected interface". El código falla en la línea "With ActiveSheet.MailEnvelope".
    Me gustaría utilizar esta función de Excel "envío a destinatario de correo" automatizando los correos a adjuntar así como el asunto.
    Espero que me puedas echar una mano. Gracias!

    ResponderEliminar
    Respuestas
    1. Hola!
      ¿¿??, no sabría decirte con certeza
      ¿con qué versión de Excel trabajas?...

      Saludos

      Eliminar
    2. Pues no hay ningún motivo para el fallo..salvo que tengas alguna librería/referencias como FALTA.
      Entra en el editor de VB > menú Herramientas > REferencias y busca si hubiera alguna marcada como FALTA o cualquier otra cosa 'rara'

      Es lo único que ahora mismo se me ocurre

      Saludos y suerte!

      Eliminar