Páginas

lunes, 24 de agosto de 2015

VBA Outlook: Como ejecutar una macro sobre un correo nuevo (entrante)

Como identificas el ultimo correo recibido? con el metodo GetLast del objeto Items

Esta macro lee el titulo del ultimo mail y busca si contiene la palabra "EMAILTEST".
De ser así, ejectuta un proceso. En este caso toma el nombre del remitente, elimina los espacios y lo envia como argumento a un programa de Python.

Sub BOQCOST()

Set ns = Application.GetNamespace("MAPI")
Set fold = ns.GetDefaultFolder(olFolderInbox) 'selecciona la carpeta Inbox
Set mensajenuevo = fold.Items.GetLast 'Obtiene el nuevo email que ingresa

If mensajenuevo.Subject = "EMAILTEST" Then 'Testea la plabra clave en el titulo 
    Set user = mensajenuevo.Sender.GetExchangeUser
    user = Replace(user.Name, " ", "")'elimina los espacios
    Shell ("python D:\myScripts\script.py " & user)
End If

End Sub 
 
Ahora, como ejecutamos esta macro sobre cada mail entrante?
Vamos a ThisOutlookSession, seleccionamos "Application" y "NewMail" 
Allí escribimos un call a la macro, de esta manera:
 

Private Sub Application_NewMail()
    Call BOQCOST
End Sub

1 comentario:

  1. Gracias, en realidad estoy tratando de abrir un archivo de excel cuando llegue a la bandeja de entrada y me ha costado trabajo, intentaré con este código, buen aporte

    ResponderEliminar