Excel · Outlook · Visual Basic

Descargar archivos adjuntos a una carpeta – Outlook / Macro Visual Basic

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:

  1. Habilitar la ejecución de Script para una regla, para el Office 2016 este proceso esta deshabilitado
  2. 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

rededit

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

programador

Luego nos vamos a nuestra nueva pestaña y le damos un clic al botón Seguridad de macros

Pest Prog

Y para terminar marcamos Habilitar todas las macros, luego cerramos nuestra ventana

hab macro

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

consol vb

Creamos un Modulo y en ese modulo ingresaremos el siguiente código

codigo

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

regla1

En la venta de Asistente para reglas, seleccionaremos el item Aplicar regla a los mensajes que reciba

regla 2

En el paso 1 de las condiciones a comprobar, seleccionaremos el correo entrante que descargaremos todos sus archivos adjuntos

regla 3

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

regla 4

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…

regla 5

Luego realizaremos una prueba, vamos a enviar un correo a mi cuenta con un archivo adjunto.

test

Ahora verán el archivo en su carpeta.

archivo

Espero que esta publicación les pueda ayudar, no se olviden en seguirme @peter_chirinos

 

10 comentarios sobre “Descargar archivos adjuntos a una carpeta – Outlook / Macro Visual Basic

    1. 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

  1. 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!!

Deja un comentario