Saltar al contenido

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

Entradas relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (7)

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

Responder

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.

Responder

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

Responder

jajajaja, ya vi cual era mi error al era antes del .send poner

.DeleteAfterSubmit = true

Gracias por darme una idea… en verdad me sirvió de mucho.

Responder

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.

Responder

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?

Responder

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.

Responder
Leer entrada anterior
cPanel - Cambiar lenguaje de la plataforma cPanel
cPanel – Cambiar lenguaje de la plataforma cPanel

cPanel es uno de los panel de control mas populares que utilizan los servicios de alojamiento web si el servicio...

Cerrar