Tuve un requerimiento de una amiga que me pedía poder tener una regla para que aplique a todos los correos entrantes de una o varias personas, en la cual si tenia un archivo adjunto se descargue dicho archivo en una carpeta especifica.
Por que crear esta regla?, imaginen que son del área de ventas y siempre les llega durante el día varios correos con adjuntos de ordenes de compra, como una buena practica siempre descargan esas ordenes en una carpeta especifica, pero siempre tenemos que estar pendientes para descargar todas las que lleguen, para reducir el esfuerzo vamos a crear una macro (vb) para que realice este proceso.
Antes de crear la macro con visual basic, debemos validar dos pre-requisitos:
- Habilitar la ejecución de Script para una regla, para el Office 2016 este proceso esta deshabilitado
- Habilitar la ejecución de macros en el Outlook
Primera tarea:
Debemos ingresar al regedit de nuestra maquina y nos vamos a la siguiente ruta: HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security – le creamos un REG_DWORD y le ponemos de nombre: EnableUnsafeClientMailRules con un valor de 1
Esto permitirá tener en las acciones de la regla la ejecución de un script
Segunda tarea:
Debemos habilitar la pestaña Programador en nuestro Outlook, para esto nos vamos a la ventana Opciones de Outlook y marcamos en el panel derecho el item Programador
Luego nos vamos a nuestra nueva pestaña y le damos un clic al botón Seguridad de macros
Y para terminar marcamos Habilitar todas las macros, luego cerramos nuestra ventana
Hasta este punto ya tenemos los pre-requisitos, sin estos dos, no podremos ejecutar nuestra Macro.
Procederemos a crear nuestra macro, para esto debemos ingresar a la consola del Visual Basic en nuestro Outlook
Creamos un Modulo y en ese modulo ingresaremos el siguiente código
Ahora vamos a crear nuestra regla, nos vamos a la ventana de Reglas y alertas, luego le daremos un clic al botón Nueva regla
En la venta de Asistente para reglas, seleccionaremos el item Aplicar regla a los mensajes que reciba
En el paso 1 de las condiciones a comprobar, seleccionaremos el correo entrante que descargaremos todos sus archivos adjuntos
En la ventana de las acciones, marcamos el item Ejecutar un scrpit y en el paso 2 marcamos el hipervinculo un script, en la ventana que se muestra seleccionamos nuestra macro
No aplicaremos excepciones, le damos siguiente, en la ultima ventana le pondremos un nombre y le damos finalizar.
PD: Si queremos que se aplique a los correos que ya tienes, seleccionas Ejecutar esta regla ahora…
Luego realizaremos una prueba, vamos a enviar un correo a mi cuenta con un archivo adjunto.
Ahora verán el archivo en su carpeta.
Espero que esta publicación les pueda ayudar, no se olviden en seguirme @peter_chirinos
Gracias Peter … Tú siempre dándonos más conocimientos .. súper
Gracias a ti Noemí
excelente!! como haría solo para que descargue un tipo de archivo ejm xml
Hola, tambien se puede hacer, dejame revisarlo y te comento, si puedes me dejas tu correo
Public Sub saveAttachtoDisk (itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim dateFormat
dateFormat = Format(Now, «yyyy-mm-dd H-mm»)
saveFolder = «C:XML»
For Each objAtt In itm.Attachments
if InStr(objAtt.DisplayName, «.xml») Then
objAtt.SaveAsFile saveFolder & «» & dateFormat & » – «& objAtt.DisplayName
end if
Next
End Sub
Hola Peter,
quisiera que me ayudaras en lo siguiente:
hacer que una determinada cuenta de correo en Outlook, descargue los pdf adjuntos, automáticamente, a una determinada carpeta en mi pc.
tengo varias cuentas creadas en el Outlook, por eso quisiera, que una cuenta a una carpeta, otra cuenta a otra carpeta.
tengo configurado lo que antes has explicado, y me funciona muy bien.
solo desearía esta matización que te explico.
muchas gracias y un saludo!!
Hola, disculpa la demora de mi respuesta, pero he estado de viaje por trabajo, me parece interesante tu requerieminto, voy a revisarlo esta semana, espero encontrar una respuesta
Hola, funciona excelente si yo quisiera, que guarde el archivo peor con cierto nombre fijo.