VBScript  – Guardar los archivos adjuntos catalogado por remitente y Eliminar adjunto del Correo

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
Califica este articulo

Fernando O.

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.

7 comentarios en “VBScript  – Guardar los archivos adjuntos catalogado por remitente y Eliminar adjunto del Correo

  1. Hola me gustaría mucho tu pagina, pregunta realice una macro en Excel para enviar correos masivos hay una forma de como eliminar Los correos enviados desde la macro que los envia? Me seria de mucha ayuda si me dieras una idea de como empezar

    • Buen dia Alberto!

      Puedes indicar en el macro que se elimine el correo despues de enviar con la propiedad MailItem.DeleteAfterSubmit

      instancia.DeleteAfterSubmit = valor (True/False)

      Nos comentas los resultados

      Saludos.

  2. no me lo acepta ya le puse la variable que declaro por ejemplo

    Mailapp.DeleteAfterSubmit = True
    y no me deja
    asip es como tengo mi parte del correo
    for i= 1 To variable de correos

    With Mailapp
    .To =”correo”
    .Subject = “hola”
    .HTMLBody= Aqui pongo lo que lleva el cuerpo del correo
    .Send
    Segun yo deberia de ir aqui pero me sale error de compilacion
    End With
    next i

    llevo como una semana aprendiendo este lenguaje y me esta gustando pero aun no se mucho de como utilizar sus propiedades no se si me puedas orientar mas

    • Buen dia Alberto,

      Me alegra que hayas encontrado la solución y que te funcionara, cualquier consulta aqui estamos, no creas que Visual Basic es mi fuerte pero lo poco que se lo estaré compartiendo :).

      Saludos.

  3. Hola fer ya tengo todo listo , ahora queria agradecerte y al mismo tiempo hacerte una pregunta….
    lo que yo necesito es que cuando me lleguen los correos me lleguen en formato original por ejemplo en html y no me lo cambie a archivo plano
    hay alguna libreria o algo que me lo permita? me podrias ayudar?

    • Buen dia Alejandro

      Fijate la vez que requerí mantener el formato del cuerpo de correo tuve que copiar y pegar en otra aplicación para poder procesar la información tal cual.
      En la primer oportunidad verifico que modificar al código para imprimir el texto en formato original.

      Excelente dia.

Deja un comentario...

Compartir
Twittear
+1
Compartir
Pin
Stumble