VBA macro de Outlook ejecutar automáticamente en la recepción de correo electrónico

VBA - Visual Basic for Application

Si desea procesar un correo electrónico directamente en Outlook con VBA, por ejemplo, moverlo después de que haya llegado a la bandeja de entrada, a menudo puede utilizar las reglas de Outlook para ello.

Sin embargo, para requisitos especiales, como guardado automático de archivos adjuntos, las reglas de Outlook alcanzan rápidamente sus límites. Esto se debe a que para este tipo de funcionalidades se suele utilizar una macro VBA.

En versiones anteriores de Outlook, todavía era posible establecer Ejecutar un script en las reglas de Outlook tras recibir un mensaje de. Pero esto se ha suprimido por motivos de seguridad. Según algunos foros, se puede volver a habilitar yendo al editor del registro y poniendo a 1 la clave EnableUnsafeClientMailRules.

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security.
DWORD: EnableUnsafeClientMailRules
Valor: 1

Con mi Outlook365, sin embargo, esta solución ya no estaba disponible.

Ejecutar macro después de que el correo electrónico llegue a la bandeja de entrada

Microsoft recomienda en este punto basarse en la Evento NewMail o mejor aún Evento NewMailEx. Esto le permitirá procesar automáticamente los mensajes de correo electrónico mediante VBA cuando se reciban en la bandeja de entrada. Por ejemplo, es posible imprimir automáticamente un archivo adjunto de correo electrónico si procede de un determinado remitente, inmediatamente en el momento en que llega el correo electrónico.

Esto se puede utilizar para resolver muchas tareas de automatización sin tener que hacer enésima clics.

Usando VBA Application_NewMailEx()

En el código VBA de abajo está el marco básico para ejecutar una macro cuando llega un correo electrónico. Hay que tener cuidado de implementar el método Application_NewMailEx dentro de ThisOutlookSession.

Screenshort Visual Basic Editor Outlook
Inserta el método Application_NewMailEx en ThisOutlookSession

Ambos métodos Application_NewMail y Application_NewMailEx se siguen ejecutando antes de las reglas de Outlook definidas.

En el ejemplo, se realiza una comprobación de la dirección del remitente con la propiedad Item.SenderEmailAddress. Son concebibles muchas otras comprobaciones, como la del asunto (Item.Subject). Dentro de esta sentencia If, se puede ejecutar más código o ejecutar macros de otros módulos.

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim Item As Object
Dim Email As String
Set Item = Session.GetItemFromID(EntryIDCollection)
Item.Save
'Obtener dirección de correo electrónico del remitente.
Email = Item.SenderEmailAddress
'Comprobar si el correo electrónico de remitente específico.
Si Email = "vorname.nachname@ekiwi.de" Entonces
'ejecuta más código y macros aquí.
Modulo1.MiMacro
Debug.Print "El correo correcto es: " + Email.
Else
Debug.Print "El correo incorrecto es: " + Email.
End If
End Sub

Si quieres ejecutar métodos de otros módulos en este punto, tienes que asegurarte de que están declarados como public.

Nota: Si utilizas Debug.Print para realizar pruebas, debes utilizar Ver => Ventana Directa (Ctrl+G) para mostrar la ventana de salida en el editor VBA. Para los programadores de otros lenguajes de programación sin duda una redacción desconocida.

Bestseller No. 1
Bestseller No. 2

Leave a Reply

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