Comprimir archivo desde VBA

Necesito, desde una aplicación excel con macros Visual Basic para Aplicaciones, comprimir (zipear), automáticamente, un archivo (excel extenso)para enviarlo, luego por email (outlook)también automáticamente. Es decir "zipear y enviar un archivo excel, sin otra intervención del operador, que ejecutar una macro (la cual antes de enviarlo por email, hace procesos varios con el archivo)
¿Conoces alguna "receta" que resuelva el problema?

2 respuestas

Respuesta
1

En el trabajo manejamos muchos archivos .zip (de 30 o mas) necesito una macro que me descomprima los zip me de la posibilidad de agregar un archivo .pdf o .tiff a cada carpeta descomprimida y volverlas a comprimir.

Seria de gran ayuda una macro así muchas gracias de ante mano

Respuesta
1
A mi saber y entender desde Excel no podrás comprimir un libro ya que se trata de una aplicación fuera de Office y necesitamos darle los parámetros a WinZip (ruta y nombre del archivo a comprimir)
Lo que sí puedo darte es la instrucción que llama al WinZip (y allí ingresar las opciones) y también la que te envía por correo un archivo adjunto (algo es algo ;-)
Sub miWinZip()
'macro que llama al progrma Winzip
'macro desarrollada por Elsamatilde el 3/10/06
Dim llamada As Variant
Dim ruta As String
'en caso de no encontrarlo mostrará mensaje
On Error GoTo MensaError
'se asigna la ruta predeterminada a la variable
ruta = "C:\Archivos de programa\WinZip\WINZIP32.EXE"
'se ejecuta el programa
'el número 3 indica que la aplicación se maximiza con foco
llamada = Shell(ruta, 3)
Exit Sub
MensaError:
MsgBox "No se encuentra el programa buscado. Verifique dónde se encuentra instalado el archivo exe"
Exit Sub
End Sub
Sub EnviaCorreo()
Dim myOLApp
Dim myOLItem
Dim olMailItem
Dim midire, miasunto, miRuta, mitexto As String
'datos del mail a enviar
midire = ActiveSheet.Range("B5").Value
miasunto = ActiveSheet.Range("B8").Value
mitexto = ActiveSheet.Range("B10").Value
'se crea un objeto Outlook, Mail
Set myOLApp = CreateObject("Outlook.Application")
Set myOLItem = myOLApp.CreateItem(olMailItem)
'se establecen los campos del mensaje
With myOLItem
.to = midire 'campo A o Para
.Subject = miasunto 'campo Asunto
.body = mitexto 'cuerpo del mensaje
.Attachments.Add ("C:\test.zip") 'adjunta archivo
'enviar
.send
End With
'se liberan las variables creadas
Set myOLApp = Nothing
Set myOLItem = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas