[RESUELTO] Macro para descomprimir un fichero zip

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
RASAPA
Mensajes: 224
Registrado: Mar Mar 16, 2010 10:41 pm

[RESUELTO] Macro para descomprimir un fichero zip

Mensaje por RASAPA »

Buenos dias a todos,

Una vez ví una macro para descomprimir un fichero zip con codigo de openOffice.
Ahora que lo necesitaria, no puedo encontrar nada parecido.
Alguien ha provado de descomprimir algun zip ?

Saludos
Ramon
Última edición por mauricio el Mié Dic 02, 2015 5:44 pm, editado 2 veces en total.
Razón: Usar icono de RESUELTO
LibreOffice 7.3.1.3
Linux Mint 20.3
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para descomprimir un fichero zip

Mensaje por fornelasa »

Intentemos más o menos con:

Código: Seleccionar todo

Sub Descomprimir
Destino = "C:\TuCarpeta\TuCarpeta"
 Origen = "C:\TuCarpeta\TuCarpeta\ArchivoEquis.zip"
oAplica = CreateObject("Shell.Application")
oAplica.Namespace(Destino).CopyHere oAplica.Namespace(Origen).items
End Sub
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
RASAPA
Mensajes: 224
Registrado: Mar Mar 16, 2010 10:41 pm

Re: Macro para descomprimir un fichero zip

Mensaje por RASAPA »

Buenos dias Fornelasa,
He provado con linux mint i LibreOffice 4,2,8,2 y la linea :

Código: Seleccionar todo

oAplica = CreateObject("Shell.Application")
me da el error: Se ha producido un error al crear el objeto.No se puede cargar el modulo.El formato no es valido.

Muchas gracias y saludos
Ramon
LibreOffice 7.3.1.3
Linux Mint 20.3
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro para descomprimir un fichero zip

Mensaje por mauricio »

Usa Python: https://docs.python.org/3.4/library/zip ... extractall

y próximamente en EasyDev...
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para descomprimir un fichero zip

Mensaje por fornelasa »

ummmmm ok bien.
Solo me gustaría comentar que con los programas y sistema operativo de mi firma funciona normalmente. Nunca he usado linux mint
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro para descomprimir un fichero zip

Mensaje por mauricio »

Shell.Application solo esta disponible en Windows...
fornelasa escribió:Nunca he usado linux mint
Muy mal hecho... :lol: :lol:
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Macro para descomprimir un fichero zip

Mensaje por fornelasa »

:lol: :lol: :lol: :lol: :lol:
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
RASAPA
Mensajes: 224
Registrado: Mar Mar 16, 2010 10:41 pm

Re: Macro para descomprimir un fichero zip

Mensaje por RASAPA »

Buenos diias,
Usa Python: https://docs.python.org/3.4/library/zip ... extractall

y próximamente en EasyDev...
Teniendo en cuenta esta noticia, creo que esperaré su inclusión en EsasyDev.
Va a ser muy potente esta extension :bravo: :bravo:

Saludos
Ramon
LibreOffice 7.3.1.3
Linux Mint 20.3
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro para descomprimir un fichero zip

Mensaje por mauricio »

Listo: http://easydev.readthedocs.org/en/devel ... html#unzip

En cuanto valides que funciona correctamente, lo paso a producción...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
RASAPA
Mensajes: 224
Registrado: Mar Mar 16, 2010 10:41 pm

Re: Macro para descomprimir un fichero zip

Mensaje por RASAPA »

Hoila Mauricio,

He probado el codigo pero me da error "No se encuentra la propiedad o el metodo: Unzip"
He probado de bajarme la ultima version 2,2,0 y me sale lo mismo.

Pregunto: Hay alguna otra forma de validar que funciona??

Saludos
LibreOffice 7.3.1.3
Linux Mint 20.3
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro para descomprimir un fichero zip

Mensaje por mauricio »

Esta implementado en desarrollo mi amigo, siempre hay que usar la versión 2.3 de desarrollo: https://github.com/UniversoLibreMexicoA ... elop/files

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
RASAPA
Mensajes: 224
Registrado: Mar Mar 16, 2010 10:41 pm

Re: Macro para descomprimir un fichero zip

Mensaje por RASAPA »

Perfecta la solucion.
Agil y rapida.
Muchas gracias.
LibreOffice 7.3.1.3
Linux Mint 20.3
196hongos
Mensajes: 3
Registrado: Lun Ene 23, 2017 7:35 pm

Re: [RESUELTO] Macro para descomprimir un fichero zip

Mensaje por 196hongos »

Sub Descomprimir
Destino = "C:\TuCarpeta\TuCarpeta"
Origen = "C:\TuCarpeta\TuCarpeta\ArchivoEquis.zip"
oAplica = CreateObject("Shell.Application")
oAplica.Namespace(Destino).CopyHere oAplica.Namespace(Origen).items
End Sub


:( me sale el error

Object doesn't support this property or method
OpenOffice 3.1
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO] Macro para descomprimir un fichero zip

Mensaje por mauricio »

Siempre es bueno mostrar la línea donde te da el error, ayuda a quien quiera ayudarte...

Supongo que te da error en la penultima línea, ¿es correcto?...

¿Que S.O. estas usando?... ¿realmente estas usando AOO 3.1 como dice tu firma?

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
196hongos
Mensajes: 3
Registrado: Lun Ene 23, 2017 7:35 pm

Re: [RESUELTO] Macro para descomprimir un fichero zip

Mensaje por 196hongos »

mauricio escribió:Siempre es bueno mostrar la línea donde te da el error, ayuda a quien quiera ayudarte...

Supongo que te da error en la penultima línea, ¿es correcto?...

¿Que S.O. estas usando?... ¿realmente estas usando AOO 3.1 como dice tu firma?

Saludos


Que tal


asi es


oAplica = CreateObject("Shell.Application") esta linea es la del error.


estoy corriendolo en Office 2013
OpenOffice 3.1
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO] Macro para descomprimir un fichero zip

Mensaje por mauricio »

No damos soporte en estos foros para Office
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
196hongos
Mensajes: 3
Registrado: Lun Ene 23, 2017 7:35 pm

Re: [RESUELTO] Macro para descomprimir un fichero zip

Mensaje por 196hongos »

mauricio escribió:No damos soporte en estos foros para Office



Gracias!


No hace falta, ya encontre la solucion.

Solo es necesario reemplazar el final por

Set oApp = CreateObject("Shell.Application")

oApp.Namespace(Destino).CopyHere oApp.Namespace(Origen).items
OpenOffice 3.1
martinbrait
Mensajes: 4
Registrado: Dom Jul 31, 2016 10:49 pm

Re: [RESUELTO] Macro para descomprimir un fichero zip

Mensaje por martinbrait »

'Listing 5.88: Extract all files in a zip file.
' Test usage for the following subs
'call unzipFileFromArchive("c:\test.zip", "test.txt", "c:\test.txt")
'call unzipArchive("c:\test.zip", "c:\")

Código: Seleccionar todo

Sub unzipFileFromArchive( _
strZipArchivePath As String, _
strSourceFileName As String, _
strDestinationFilePath As String)
Dim blnExists As Boolean
Dim args(0) As Variant
Dim objZipService As Variant
Dim objPackageStream As Variant
Dim objOutputStream As Variant
Dim objInputStream As Variant
Dim i As Integer
'==========================================================================
' Unzip a single file from an archive. You must know the exact name
' of the file inside the archive before this sub can dig it out.
'
' strZipArchivePath = full path (directory and filename)
' to the .zip archive file.
' strSourceFileName = the name of the file being dug from the .zip archive.
' strDestinationFilePath = full path (directory and filename) where
' the source file will be dumped.
'=========================================================================
' Create a handle to the zip service,
objZipService = createUnoService("com.sun.star.packages.Package")
args(0) = ConvertToURL(strZipArchivePath)
objZipService.initialize(args())
' Does the source file exist?
If Not objZipService.HasByHierarchicalName(strSourceFileName) Then Exit Sub
' Get the file input stream from the archive package stream.
objPackageStream = objZipService.GetByHierarchicalName(strSourceFileName)
objInputStream = objPackageStream.GetInputStream()
' Define the output.
objOutputStream = createUnoService("com.sun.star.ucb.SimpleFileAccess")
objOutputStream.WriteFile(ConvertToURL(strDestinationFilePath), _
objInputStream)
End Sub

Código: Seleccionar todo

Sub unzipArchive( _
strZipArchivePath As String, _
strDestinationFolder As String)
Dim args(0) As Variant
Dim objZipService As Variant
Dim objPackageStream As Variant
Dim objOutputStream As Variant
Dim objInputStream As Variant
Dim arrayNames() As Variant
Dim strNames As String
Dim i As Integer
'=========================================================================
' Unzip the an entire .zip archive to a destination directory.
'
' strZipArchivePath = full path to the .zip archive file.
' strDestinationFilePath = folder where the source files will be dumped.
'=========================================================================
' Create a handle to the zip service,
objZipService = createUnoService("com.sun.star.packages.Package")
args(0) = ConvertToURL(strZipArchivePath)
objZipService.initialize(args())
' Grab a package stream containing the entire archive.
objPackageStream = objZipService.GetByHierarchicalName("")
' Grab a listing of all files in the archive.
arrayNames = objPackageStream.getElementNames()
' Run through each file in the name array and pipe from archive
' to destination folder.
For i = LBound(arrayNames) To UBound(arrayNames)
strNames = strNames & arrayNames(i) & Chr(13)
' Read in and pump out one file at a time to the filesystem.
ObjInputStream = _
objZipService.GetByHierarchicalName(arrayNames(i)).GetInputStream()
objOutputStream = createUnoService("com.sun.star.ucb.SimpleFileAccess")
objOutputStream.WriteFile(ConvertToURL(strDestinationFolder & _
arrayNames(i)), objInputStream)
Next
MsgBox strNames
End Sub
OpenOffice 3.1
jmartinez2017
Mensajes: 1
Registrado: Mié May 10, 2017 5:18 pm

Re: [RESUELTO] Macro para descomprimir un fichero zip

Mensaje por jmartinez2017 »

196hongos escribió:
mauricio escribió:Siempre es bueno mostrar la línea donde te da el error, ayuda a quien quiera ayudarte...

Supongo que te da error en la penultima línea, ¿es correcto?...

¿Que S.O. estas usando?... ¿realmente estas usando AOO 3.1 como dice tu firma?

Saludos


Que tal


asi es


oAplica = CreateObject("Shell.Application") esta linea es la del error.


estoy corriendolo en Office 2013


Hola, para solucionar tu pbroblema y correrlo en Office, solo agrega esto "Set" a inicio de esta linea:
oAplica = CreateObject("Shell.Application")

debe quedar así:

Set oAplica = CreateObject("Shell.Application")
OpenOffice 4.1.3
Windwos 7 Profesional
Responder