Outlook es un programa muy extendido, sobre todo en el ámbito profesional, para gestionar y procesar correos electrónicos y por supuesto mucho más, si sólo pensamos en el calendario y la gestión de tareas.
Una gran ventaja de Outlook sobre otros clientes de correo electrónico es que viene con VBA (Visual Basic for Applications), lo que permite automatizar muchas tareas adicionales si las funciones apropiadas no se pueden realizar ya a través de las reglas y funciones integradas de Outlook.
Guardar automáticamente un archivo adjunto de correo electrónico con VBA
Una tarea que puede ahorrarle muchos clics es guardar archivos adjuntos de correo electrónico. Si tiene los típicos correos electrónicos recurrentes cuyos archivos adjuntos deben guardarse siempre en la misma ruta, tendrá que hacer clic en esta ruta cada vez con el cuadro de diálogo «Guardar como.
Utilizando VBA, puede escribir una macro para guardar el archivo adjunto del correo electrónico. También puede asignar un acceso directo a la macro o insertar un botón en la barra para un acceso rápido. De este modo, sólo necesitará hacer clic o pulsar una tecla para guardar el archivo adjunto del correo electrónico. Una macro de este tipo también puede combinarse con otras macros para que, por ejemplo, el adjunto de correo electrónico se imprima mediante VBA al mismo tiempo.
Código VBA para guardar el archivo adjunto del correo electrónico de Outlook
El siguiente código VBA se puede utilizar para guardar los archivos adjuntos de correo electrónico bajo una ruta de carpeta fija. Sólo se guardan los archivos adjuntos del correo seleccionado.
En Outlook, se puede acceder al Editor básico visual pulsando Ctrl+F11. También es posible a través del menú Herramientas de desarrollo. Visual Basic.
Public Sub GuardarAnexos()
Dim objOL As Outlook.Application
Dim objMsg As Outlook.MailItem
Dim objAttachments As Outlook.Attachments
Dim objSelection As Outlook.Selection
Dim i As Long
Dim lngCount As Long
Dim strFile As String
Dim strFolderpath As String
Instanciar el objeto Outlook Application
Set objOL = CreateObject("Outlook.Application")
Obtener la colección de objetos seleccionados (e-mails)
Set objSelection = objOL.ActiveExplorer.Selection
' Establece la ruta de la carpeta donde se guardará el archivo adjunto del correo electrónico
strFolderpath = "c:\Users\AnyUser\Documents\subfolder\bills\year_2020\"
' Comprueba cada objeto seleccionado (correo electrónico) para ver si tiene un archivo adjunto. Si el archivo adjunto existe,
' entonces guárdelo en la ruta de la carpeta.
Para cada objMsg en objSelection
' Determina los adjuntos del objeto seleccionado (e-mail).
Set objAttachments = objMsg.Attachments
lngCount = objAttachments.Count
If lngCount > 0 Then
' Aquí usamos un contador hacia atrás, pero también debería funcionar al revés.
For i = lngCount To 1 Paso -1
Guarde el archivo adjunto antes de borrarlo del elemento.
Determine el nombre del archivo
strFile = objAttachments.Item(i).FileName
Combina la ruta de la carpeta con el nombre del archivo
strFile = strRutaCarpeta & strFile
' Guardar el adjunto como un archivo
objAttachments.Item(i).SaveAsFile strFile
Siguiente i
Fin If
Siguiente
ExitSub:
Set objAttachments = Nada
Set objMsg = Nada
Set objSelection = Nada
Set objOL = Nada
End Sub
Llamar macro de Outlook mediante acceso rápido
Ahora puedes llamar o ejecutar la macro, siempre que sea Pública, a través del Herramientas de desarrollo => Macro => Diálogo de macros. O puede colocar un botón en el acceso rápido. Con la pequeña flecha que apunta hacia abajo en el acceso rápido, seleccione «Más comandos…» o vaya a Archivo => Opciones => Barra de herramientas de acceso rápido.

.
En la ventana de diálogo que se abre a continuación, limite los comandos a macros y añada la macro en cuestión.

A continuación, mediante el botón «Cambiar«, puede asignar un icono o ajustar el texto.