Saltar al contenido

VBScript – Descomprimir zip adjunto y guardar los archivos automáticamente Outlook

A solicitud de un usuario se realizó el siguiente VBscript el cual utilizará para descomprimir y guardar automáticamente las facturas electrónicas que le envían por correo electrónico en zip.

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.- En la linea 8 debemos especificar la ruta donde se guardaran los archivos (Esta carpeta la creamos manualmente).

Nota: Solo funciona con archivos zip

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 unZipAttachments(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim objFSO As Object
Dim i: i = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")

saveFolder = "C:\Archivos unZip\"

For Each objAtt In itm.Attachments
   If ((InStr(UCase(objAtt.DisplayName), ".ZIP"))) Then
              FullFileName = saveFolder & objAtt.DisplayName
              objAtt.SaveAsFile (FullFileName)
              Set filesInzip = objShell.NameSpace(FullFileName).Items
              objShell.NameSpace(saveFolder).CopyHere filesInzip
              objFSO.DeleteFile (FullFileName)
    End If
Next
End Sub

 

Te recomendamos leer:

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 (5)

Hola Fernando, saludos, la verdad es que son muy buenos tus aportes, muchas gracias, no sé si en esta ocasión puedas ayudarme para saber como puedo programar envíos automaticos desde correos en Outlook, sé que en Excel por ejemplo se pueden programar con OnTime, pero en outlook esta opción no funciona, ¿puedes ayudarme con alguna macro o vbscript que pueda usar en outlook para poder enviar correos con una fecha y hora especifica al momento de abrir outlook?
Gracias, nuevamente saludos!!
Atentamente Enrique Martínez

Responder

Buen dia Enrique

Lo que requieres es programar el envio de un correo X dia X hora correcto?

Es un correo recurrente?

Outlook cuenta con una opción Delay delivery (Retrasar entrega) donde puedes especificar que dia y hora enviar un correo electrónico

Retrasar envio

En VBScript no conozco una función establecida como la que comentas que realice el envío, esto lo he realizado con el Task Scheduler de Windows que ejecuta un script.

Saludos.

Responder

Al ejecutar el script para desempacar los archivos adjunto manda el error: Microsoft Visual Basic, Se ha producido un error ’91’ en tiempo de ejecución: Variable de objeto o bloque With no establecido.
La línea con error es: objShell.NameSpace(saveFolder).CopyHere filesInzip

¿Alguien puede ayudarme a solucionar este error?

Responder

Buen dia Arturo

Me puedes confirmar que sea un archivo zip y cual es su peso. Quizás necesitas un temporizador para aumentar el tiempo de ejecución.

Hice una pequeña modificación al código, pruebalo y me confirmas al igual me comentas la información. solicitada.

Public Sub unZipAttachments(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim objFSO As Object
Dim i: i = 1
Set objFSO = CreateObject(\"Scripting.FileSystemObject\")
Set objShell = CreateObject(\"Shell.Application\")

saveFolder = \"C:1-Tests\"

For Each objAtt In itm.Attachments
If (Right(UCase(objAtt.FileName), 3) = \"ZIP\") Then
FullFileName = saveFolder & objAtt.FileName
objAtt.SaveAsFile (FullFileName)
\'Set filesInzip = objShell.NameSpace(FullFileName).Items
objShell.NameSpace(saveFolder).CopyHere objShell.NameSpace((FullFileName)).Items
objFSO.DeleteFile (FullFileName)
End If
Next
End Sub

Excelente dia.

Responder

Hola Fernando,

como podría modificar los nombre de los ficheros que se extraen del ZIP? En mi caso tendría solo un único fichero “dd_mm_yyxx_datos.xlsx” que me gustaría guardar siempre con el mismo nombre “Auxiliar.xlsx” Muchas gracias!

Responder
Compartir
Twittear
Compartir
Pin
Más en Outlook VBScript
VBScript – Imprimir adjunto automáticamente al momento de recibir un correo en Outlook

VBScript – Guardar archivos adjuntos de los correos seleccionados Outlook

VBScript – Guardar Archivos Adjuntos de Correos .MSG Ya Guardados en el Disco Duro

Cerrar