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
 

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.

Preguntas similares