Páginas

martes, 10 de marzo de 2015

VBA Outlook: Como guardar los adjuntos de un mail en una carpeta



Sí, sí, quizás sea DEMASIADA vagancia, pero yo recibo muchos mails que van a la misma carpeta y me fastidia hacer click derecho, guardar como, seleccionar la carpeta y etc... con esta macro para Outlook solo tengo que hacer Alt+F8 y ENTER
Para utilizarla primero hay que permitir que las macros se ejecuten en outlook, vayan a File/Options/Trust Center/Trust Center Settings/Macro Settings/ y selecciona "Enable All Macros". Luego reinicia Outlook.
Sí se que da pereza hacer todos estos pasos, pero no seas ordinario, piensa en todo el tiempo y las molestias que te ahorrarás de ahora en adelante.
Ahora ingresa a Outlook y presiona Alt+F11, sobre el nombre del proyecto (por lo general "Project 1") haz click derecho Insert/Module así como se ve en la imagen:

Ahora si en el espacio en blanco pega este código:
Sub guardar()

Dim mensaje As MailItem
Dim adjunto As Attachment
Dim carpeta As String

'escribo el nombre de la carpeta
carpeta = "D:\miCarpeta\"

'primero verifica si la ventana activa es del tipo inspector
If TypeName(Application.ActiveWindow) = "Inspector" Then
    Set mensaje = Application.ActiveWindow.CurrentItem 'selecciona el mail abierto
    If mensaje.Attachments.Count > 0 Then
        For Each adjunto In mensaje.Attachments 'explora cada adjunto en el mensaje
            adjunto.SaveAsFile (carpeta & adjunto.FileName)
        Next
        MsgBox "Adjuntos guardados."
    Else
        MsgBox "Sorry, no hay adjuntos que guardar."
    End If
Else
    MsgBox "Hello, no se guardó es NADA!"
    
End If
End Sub
Ya casi está, ahora solo tienes que poner entre comillas, el nombre de tu carpeta de archivos y reemplazarlo en la línea que dice carpeta = "D:\miCarpeta\" por ejemplo puede quedar como carpeta = "D:\misArchivos\" o "C:\MisDocumentos\" no se cual sea tu caso.
Y listo, ya está. Ahora cada vez que te llegue un mail, solo dale Alt+F8, se te abrirá una ventana, solo daleENTER
Parece que la macro hiciera algo muy sencillo pero este codigo tiene muchas posibilidades, puedes modificarlo para que vacie carpetas y guarde solo los nuevos adjuntos, puedes crear varias macros para cada carpeta, en fin lo que te imagines...

5 comentarios:

  1. Me sirvió mucho el código. Funciona perfecto.
    ¿como se podría adaptar para guardar los adjunto de uno o mas correctos seleccionados desde la bandeja, sin tener que abrirlos uno a uno?

    ResponderEliminar
    Respuestas
    1. Hola Gabriel, para hacer un proceso en cada elemento seleccionado necesitas un for loop en cada elemento de un objeto llamado "Selection". Aqui te dejo un post con el detalle de la solucion propuesta, comentame si te sirvió: http://www.rubentorres.info/2016/01/vba-outlook-como-guardar-los-adjuntos.html

      Eliminar
    2. gracias Ruben eres un genio .... me sirvio mucho aunque queria que no chancara los archivos duplicados pero lo adecue y quedo bien.

      Eliminar
  2. me sirvio muchopero como puedo hacer para que guarde el archivo con el asunto del mail.

    ResponderEliminar
  3. Hola amigo disculpa guarde la macro y todo pero me manda el mensaje que no se guardo nada, debo de tener una opción desahibilitada?

    ResponderEliminar