El siguiente VBScript es una variante de los publicados en el articulo “VBScript – Guarda los archivos adjuntos dentro de la carpeta del Remitente catalogado con fecha” Este VBScript crea una carpeta para cada remitente y va catalogando los archivos adjuntos dentro de carpetas por fecha y va eliminando los archivos adjuntos de los correos recibidos.
Respondiendo al comentario
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 17.
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 Dim Att As Attachments Dim lAttCount As Long Set Att = itm.Attachments lAttCount = Att.Count 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 While lAttCount > 0 strFile = Att.Item(1).FileName & "; " & strFile Att(1).Delete lAttCount = Att.Count Wend itm.Save strFile = "" Set myAttachment = Nothing Set Att = Nothing 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