Inicio MS / Office

VBScript – Guarda los archivos adjuntos dentro de la carpeta del Remitente catalogado con fecha

5


Ultima Actualización del Artículo: Sep 27, 2016

El siguiente VBScript es una variante de los publicados en el articulo “VBScript para guardar automáticamente archivos adjuntos Outlook.” Este VBScript crea una carpeta para cada remitente y va catalogando los archivos adjuntos dentro de carpetas por fecha.

Instrucciones de Uso

1.- Abrir el editor de Visual Basic (ALT+F11).

2.- Insertar un modulo nuevo (Insert > Module).

3.- Copiar el código VBScript.

4.- Guardamos y básicamente podria ser lo único requerido, pero podemos editar la ruta donde se crearan los directorios en la linea 11.

5.- Ahora debemos crear la regla que ejecute el Script cuando cumpla las condiciones.

Para mas información de configuración ver: Como utilizar el Editor VBA en Office (Utilizar Macros VBScript) y Outlook – Crear y configurar reglas

Código

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim dateFormat
Dim getFrom
Dim oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")
    dateFormat = Format(Now, "yyyy-mm-dd H-mm")
    getFrom = itm.SenderName
    saveFolder = "C:\Archivos\" & getFrom & "\" & dateFormat & "\"
    

If Not oFSO.FolderExists(saveFolder) Then
  CreateDirs saveFolder
End If

     For Each objAtt In itm.Attachments
          objAtt.SaveAsFile saveFolder & objAtt.DisplayName
          Set objAtt = Nothing
          Set itm = Nothing
     Next
End Sub

Sub CreateDirs(MyDirName)

    Dim arrDirs, i, idxFirst, objFSO, strDir, strDirBuild
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    strDir = objFSO.GetAbsolutePathName(MyDirName)
    arrDirs = Split(strDir, "\")

    If Left(strDir, 2) = "\\" Then
        strDirBuild = "\\" & arrDirs(2) & "\" & arrDirs(3) & "\"
        idxFirst = 4
    Else
        strDirBuild = arrDirs(0) & "\"
        idxFirst = 1
    End If

    For i = idxFirst To UBound(arrDirs)
        strDirBuild = objFSO.BuildPath(strDirBuild, arrDirs(i))
        If Not objFSO.FolderExists(strDirBuild) Then
            objFSO.CreateFolder strDirBuild
        End If
    Next

    Set objFSO = Nothing
End Sub

 

COMPARTIR
Mi nombre es Fernando, soy analista de sistemas actualmente trabajo en una empresa con mas de 200 empleados que utilizan equipo de computo al cual se les da soporte en el departamento. Uno de mis pasatiempos fuera de la empresa es escribir artículos para PortalMasTips donde documento los problemas, inquietudes y detalles interesantes que se presentan.

5 Comentarios

  1. Hola Fernando… Muy útil, bueno y claro este portal… Te felicito!!!

    He estado buscando algo que necesito pero no lo he podido encontar. Necesito extraer algunos datos que vienen incluídos dentro del cuerpo del mensaje del correo electrónico para todos los correos que vienen con un asunto específico. Por ejemplo el asunto es: CAMBIO DE DIRECCION y dentro del cuerpo del correo vienen dos columnas con DIRECCION ANTERIOR y NUEVA DIRECCION. Cómo puedo hacer para extraer esta información específica a un archivo de Excel? Muchas gracias por toda tu asistencia en este asunto.

  2. Hola Fernando, excelente el script, te consulto si es posible programar también que en el mail entrante una vez archivado el adjunto, este sea borrado del mail. Concretamente, borrar el ADJUNTO una vez guardado en el disco duro.

Deja un comentario...