martes, 21 de noviembre de 2017

VBA: .DeleteAfterSubmit Eliminar email recién enviado

En una formación reciente un alumno planteaba la duda de cómo conseguir eliminar automáticamente desde Excel el último correo electrónico enviado...
La idea era automatizar envíos masivos de emails desde Excel e ir eliminando cada correo remitido.


Para dar respuesta al alumno emplearemos la propiedad .DeleteAfterSubmit asociado al objeto MailItem.
En el blog hemos escrito algunos artículos sobre la forma de enviar emails desde Excel empleado la aplicación de Outlook (ver post).. asi que nos centraremos en esta propiedad comentada.


Nuestra macro añadida dentro de un módulo estándar de nuestro proyecto de VB:

Sub EnvioMail_y_Borrado()
Dim olApp As Object
Dim olMailItm As Object

'Creamos 'la aplicación de MS Outlook'
'que será la que voy a utilizar
Set olApp = CreateObject("Outlook.Application")

'Emplearemos el email creado en la línea anterior
'y genero un email vacío... de momento
Set olMailItm = olApp.CreateItem(0)
With olMailItm
    'indicamos quién es el destinatario... y lo incluimos en el apartado de 'Para...'
    'podíamos haber empleado las opciones .CC (con copia)
    'o también .BCC (con copia oculta)
    .to = "cursos@excelforo.com"
    '.CC = "xx@excelforo.com"
    '.BCC = "yy@excelforo.com"
    'cuál es el asunto...
    .Subject = "Excelforo: prueba para eliminar email enviado"
    ' y cual el cuerpo del correo electrónico
    .Body = "Esto es una prueba de envío de emails desde Excel" & vbCrLf & _
            "El objetivo es eliminarlo automáticamente una vez enviado..." & vbCrLf & _
            "Saludos cordiales!"
    'si quisieramos ver el email...
    '.Display
    'indicamos que se elimnaré después del envío
    .DeleteAfterSubmit = True
    'y lo enviamos...
    .Send
End With

'Dejamos limpias las variables empleadas
Set olMailItm = Nothing
Set olApp = Nothing
End Sub



Tras ejecutar la macro, el resultado es el esperado...El email enviado se ha eliminado de la carpeta de Enviados.

2 comentarios: