para KL

27/08/2007 - 19:39 por daniel | Informe spam
Hola Kl
lo primero lo siento por poner en el post tu nombre
segundo lo siento por no poder responder el post que puse hace tiempo por
que tube muchisimo trabajo y no me pude poner en el PC.
tercero muchas gracias por la ayuda dada en el algunas cosas si que
funcionaron pero otras no ya te comento.
te pongo el post por si no te acuerdas para que no lo andes buscando.
al final te pongo las dudas.
cuarto lo siento por las esplicaciones no soy muy bueno esplicando las cosas
Hola Daniel,

"daniel" <daniel_mozoncillo@yahoo.es> wrote in message
news:OLNXALT0HHA.5408@TK2MSFTNGP02.phx.gbl...

Hola a todos
1)sabeis como puedo descomprimir un archivo .rar o .zip desde una macro
en una carpeta en concreto.
2) si se puede que en un listbox sin descomprimir los archivos me los
muestre en este
como hace el programa winzip o winrar y si hago doble click en el listbox
me abra el archivo seleccionado.
3) otra macro para que si el archivo tiene contraseña muestre un inputbox
y se puedea escribir en este la contraseña y luego poder descomprimir los
archivos


Los puntos 1) y 2) estan aqui: http://www.rondebruin.nl/unzip.htm

Saludos,
KL


DUDAS
las opciones de descomprimir me las hace perfectamente
pero las de comprimir no y no me da ningun tipo de mensaje de error
algunas veces se queda muchisimo tiempo el VBA como pensando aunque sea un
archivo de 1kb.
este es el codigo que se queda parado
'*************************************************************************************************

Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, _
lpExitCode As Long) As Long

Public Const PROCESS_QUERY_INFORMATION = &H400
Public Const STILL_ACTIVE = &H103

Public Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
Dim hProg As Long
Dim hProcess As Long, ExitCode As Long
'fill in the missing parameter and execute the program
If IsMissing(WindowState) Then WindowState = 1
hProg = Shell(PathName, WindowState)
'hProg is a "process ID under Win32. To get the process handle:
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
Do
'populate Exitcode variable
GetExitCodeProcess hProcess, ExitCode
DoEvents
Loop While ExitCode = STILL_ACTIVE
End Sub
Sub UnZip_ZipFile_1()
Dim PathWinZip As String, FileNameZip As String
Dim ShellStr As String, FolderName As String

PathWinZip = "C:\Archivos de programa\WinZip\"
'This will check if this is the path where WinZip is installed.
If Dir(PathWinZip & "winzip32.exe") = "" Then
MsgBox "Please find your copy of winzip32.exe and try again"
Exit Sub
End If

FileNameZip = "C:\Data\Nuevo Archivo WinZip.zip"
FolderName = "C:\Data\"

'Unzip the zip file in the folder FolderName
ShellStr = PathWinZip & "Winzip32 -min -e" _
& " " & Chr(34) & FileNameZip & Chr(34) _
& " " & Chr(34) & FolderName & Chr(34)
ShellAndWait ShellStr, vbHide
MsgBox "Look in " & FolderName & " for extracted files"
End Sub


lo curioso es que en este otro codigo en la ventana que aparece no me
muestra los archivos winzip e probado los winrar y si aparecen pero no
funciona el codigo.

Sub UnZip_ZipFile_2()
Dim PathWinZip As String, FolderName As String
Dim ShellStr As String, strDate As String, Path As String
Dim FileNameZip As Variant, FSO As Object

PathWinZip = "C:\Archivos de programa\WinZip\"
If Dir(PathWinZip & "winzip32.exe") = "" Then
MsgBox "Please find your copy of winzip32.exe and try again"
Exit Sub
End If
strDate = Format(Now, " dd-mm-yy h-mm-ss")

FileNameZip = Application.GetOpenFilename(filefilter:="Zip Files,
*.zip")
If FileNameZip = False Then
'do nothing
Else
Path = Left(FileNameZip, Len(FileNameZip) - Len(Dir(FileNameZip)))
FolderName = Path & Format(Now, "dd-mm-yy h-mm-ss")

'Create a folder with a date/time stamp
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(FolderName) Then
FSO.CreateFolder FolderName
'Unzip the zip file in the folder FolderName
ShellStr = PathWinZip & "Winzip32 -min -e" _
& " " & Chr(34) & FileNameZip & Chr(34) _
& " " & Chr(34) & FolderName & Chr(34)
ShellAndWait ShellStr, vbHide
MsgBox "Look in " & FolderName & " for extracted files"
Else
MsgBox "The folder already exist"
End If

End If
End Sub

lo unico que necesito es que en un textbox1 tengo la ruta completa de un
archivo y luego con un comandbutton lo comprima en una carpeta que esta en
el textbox2.

otra como seria para no tener que poner la ruta del .exe de winzip y que en
el ordenador que este la busque directamente.

todo esto tambien se podria hacer con winrar.




un saludo y muchisimas gracias
Daniel

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
28/08/2007 - 06:51 | Informe spam
hola, daniel ! [si no te importa... y en tanto regresa KL]...

1) no se si habras observado la primera *anotacion* [en letra roja] de la pagina de Ron:...
-> (Note: you must have a registered copy of WinZip)

2) [probablemente] podrias cambiar/adaptar/... a las opciones con la herramienta de windows-xp -?-
-> Zip file or files with the default Windows XP zip program (VBA)
http://www.rondebruin.nl/windowsxpzip.htm
-> y no te olvides de revisar el ejemplo para la opcion del UnZip [windows-xp] desde:
http://www.rondebruin.nl/files/windowsxpunzip.txt

saludos,
hector.

__ la consulta original __
Hola Kl
lo primero lo siento por poner en el post tu nombre
segundo lo siento por no poder responder el post que puse hace tiempo por que tube muchisimo trabajo y no me pude poner en el PC.
tercero muchas gracias por la ayuda dada en el algunas cosas si que funcionaron pero otras no ya te comento.
te pongo el post por si no te acuerdas para que no lo andes buscando. al final te pongo las dudas.
cuarto lo siento por las esplicaciones no soy muy bueno esplicando las cosas

Hola a todos
1)sabeis como puedo descomprimir un archivo .rar o .zip desde una macro en una carpeta en concreto.
2) si se puede que en un listbox sin descomprimir los archivos me los muestre en este
como hace el programa winzip o winrar y si hago doble click en el listbox me abra el archivo seleccionado.
3) otra macro para que si el archivo tiene contraseña muestre un inputbox y se puedea escribir en este la contrase#a
y luego poder descomprimir los archivos



Los puntos 1) y 2) estan aqui: http://www.rondebruin.nl/unzip.htm

DUDAS
las opciones de descomprimir me las hace perfectamente
pero las de comprimir no y no me da ningun tipo de mensaje de error
algunas veces se queda muchisimo tiempo el VBA como pensando aunque sea un archivo de 1kb.
este es el codigo que se queda parado

Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, _
lpExitCode As Long) As Long

Public Const PROCESS_QUERY_INFORMATION = &H400
Public Const STILL_ACTIVE = &H103

Public Sub ShellAndWait(ByVal PathName As String, Optional WindowState)
Dim hProg As Long
Dim hProcess As Long, ExitCode As Long
'fill in the missing parameter and execute the program
If IsMissing(WindowState) Then WindowState = 1
hProg = Shell(PathName, WindowState)
'hProg is a "process ID under Win32. To get the process handle:
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
Do
'populate Exitcode variable
GetExitCodeProcess hProcess, ExitCode
DoEvents
Loop While ExitCode = STILL_ACTIVE
End Sub
Sub UnZip_ZipFile_1()
Dim PathWinZip As String, FileNameZip As String
Dim ShellStr As String, FolderName As String
PathWinZip = "C:\Archivos de programa\WinZip\"
'This will check if this is the path where WinZip is installed.
If Dir(PathWinZip & "winzip32.exe") = "" Then
MsgBox "Please find your copy of winzip32.exe and try again"
Exit Sub
End If
FileNameZip = "C:\Data\Nuevo Archivo WinZip.zip"
FolderName = "C:\Data\"
'Unzip the zip file in the folder FolderName
ShellStr = PathWinZip & "Winzip32 -min -e" _
& " " & Chr(34) & FileNameZip & Chr(34) _
& " " & Chr(34) & FolderName & Chr(34)
ShellAndWait ShellStr, vbHide
MsgBox "Look in " & FolderName & " for extracted files"
End Sub

lo curioso es que en este otro codigo en la ventana que aparece no me muestra los archivos winzip
e probado los winrar y si aparecen pero no funciona el codigo.

Sub UnZip_ZipFile_2()
Dim PathWinZip As String, FolderName As String
Dim ShellStr As String, strDate As String, Path As String
Dim FileNameZip As Variant, FSO As Object
PathWinZip = "C:\Archivos de programa\WinZip\"
If Dir(PathWinZip & "winzip32.exe") = "" Then
MsgBox "Please find your copy of winzip32.exe and try again"
Exit Sub
End If
strDate = Format(Now, " dd-mm-yy h-mm-ss")
FileNameZip = Application.GetOpenFilename(filefilter:="Zip Files, *.zip")
If FileNameZip = False Then
'do nothing
Else
Path = Left(FileNameZip, Len(FileNameZip) - Len(Dir(FileNameZip)))
FolderName = Path & Format(Now, "dd-mm-yy h-mm-ss")
'Create a folder with a date/time stamp
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(FolderName) Then
FSO.CreateFolder FolderName
'Unzip the zip file in the folder FolderName
ShellStr = PathWinZip & "Winzip32 -min -e" _
& " " & Chr(34) & FileNameZip & Chr(34) _
& " " & Chr(34) & FolderName & Chr(34)
ShellAndWait ShellStr, vbHide
MsgBox "Look in " & FolderName & " for extracted files"
Else
MsgBox "The folder already exist"
End If
End If
End Sub

lo unico que necesito es que en un textbox1 tengo la ruta completa de un archivo
y luego con un comandbutton lo comprima en una carpeta que esta en el textbox2.

otra como seria para no tener que poner la ruta del .exe de winzip y que en el ordenador que este la busque directamente.

todo esto tambien se podria hacer con winrar.
Respuesta Responder a este mensaje
#2 daniel
28/08/2007 - 18:54 | Informe spam
Hola Hector Miguel
no me importa que respondas.
Muchisimas gracias ya funciona perfecto el descompresor.
siento no haber podido contestarte a los post que hice ya hace unos cuantos
dias
es que e tenido mucho trabajo en cuanto pueda los miro.
haber si se puede mejorar un poco estas macros de descompresion.
como podria hacer lo siguiente:
tengo un listbox1 un comandbutton1 un label1
en el label1 esta la ruta de la carpeta y en el listbox1 los archivos que
hay dentro de esta carpeta.
1)necesito que cuando pulse el comandbutton ponga el listbox1 en multiselect
y que los archivos que seleccione me los comprima en esa misma carpeta luego
al acabar que se desactive el multiselect.
2)se puede ver los archivos que tiene un archivo winzip si descomprimir le
que los muestre en un listbox2.
3)se puede hacer todo con el winrar Ej.: si una persona no tiene instalado
el winzip y si tiene instalado el winrar que lo pueda utilizar
4)si se puede lo anterior que al activar el userform me muestre si tiene
instalado los programas Ej.:un boton para el winrar y otro boton para el
winzip

muchisimas gracias Hector
un saludo
Daniel

"Héctor Miguel" escribió en el mensaje
news:
hola, daniel ! [si no te importa... y en tanto regresa KL]...

1) no se si habras observado la primera *anotacion* [en letra roja] de la
pagina de Ron:...
-> (Note: you must have a registered copy of WinZip)

2) [probablemente] podrias cambiar/adaptar/... a las opciones con la
herramienta de windows-xp -?-
-> Zip file or files with the default Windows XP zip program (VBA)
http://www.rondebruin.nl/windowsxpzip.htm
-> y no te olvides de revisar el ejemplo para la opcion del UnZip
[windows-xp] desde:
http://www.rondebruin.nl/files/windowsxpunzip.txt

saludos,
hector.
Respuesta Responder a este mensaje
#3 Héctor Miguel
01/09/2007 - 04:59 | Informe spam
hola, daniel !

1) considera que la opcion del WinZip ya requiere de una copia registrada de la aplicacion
por lo que es probable/seguro que encontraras algunos casos de dificil solucion y/o *control* -?-
[asumo que para el caso de WinRar seria +/- lo mismo] -?-

2) mostrar los archivos contenidos en un paquete... SIN descompimirlo ?
[te aseguro que] aun las aplicaciones mismas los descomprimen *temporalmente* para su interfaz -?-

3) por lo anterior, es probable que una mejor alternativa sea la opcion de des/comprimir con la herramienta del windows-xp -?-

por lo demas, [creo que] una vez *controlado* el directorio de descompresion, mostrar los archivos en controles sera... :D

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
... si se puede mejorar un poco estas macros de descompresion. como podria hacer lo siguiente:
tengo un listbox1 un comandbutton1 un label1
en el label1 esta la ruta de la carpeta y en el listbox1 los archivos que hay dentro de esta carpeta.
1) necesito que cuando pulse el comandbutton ponga el listbox1 en multiselect
y que los archivos que seleccione me los comprima en esa misma carpeta luego al acabar que se desactive el multiselect.
2) se puede ver los archivos que tiene un archivo winzip si descomprimir le que los muestre en un listbox2.
3) se puede hacer todo con el winrar Ej.: si una persona no tiene instalado el winzip y si tiene instalado el winrar que lo pueda utilizar
4) si se puede lo anterior que al activar el userform me muestre si tiene instalado los programas
Ej.:un boton para el winrar y otro boton para el winzip
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida