Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: YAcosta en Abril 25, 2012, 04:12:19 pm
-
Estoy probando para zipear un archivo usando el código que adjunto que encontré en la web del Guille (http://www.elguille.info/colabora/vb/zip32dll.htm). Funciona bien cuando tengo el archivo a zipear en la ruta del proyecto pero no logro darle la ruta del archivo que este en otro carpeta.
Proyecto (http://dl.dropbox.com/u/4052038/Otros/EjemploZipearVB.rar)
Este es el codigo que modifique para zipear:
Dim NombreFicheroNormal As String
Dim Resultado As Long
Dim intContadorFicheros As Integer
Dim FuncionesZip As ZIPUSERFUNCTIONS
Dim OpcionesZip As ZPOPT
Dim NombresFicherosZip As ZIPnames
FuncionesZip.DLLComment = DevolverDireccionMemoria(AddressOf FuncionParaProcesarComentarios)
FuncionesZip.DLLPassword = DevolverDireccionMemoria(AddressOf FuncionParaProcesarPassword)
FuncionesZip.DLLPrnt = DevolverDireccionMemoria(AddressOf FuncionParaProcesarMensajes)
FuncionesZip.DLLService = DevolverDireccionMemoria(AddressOf FuncionParaProcesarServicios)
'For intContadorFicheros = 0 To File1.ListCount
' NombresFicherosZip.s(intContadorFicheros) = File1.List(intContadorFicheros)
'Next
'YO SOLO QUIERO ZIPEAR EL PRIMERO DE LA LISTA DEL CONTROL FILE1 QUE EN MI CASO
'TAMBIÉN ESTOY USANDO ESE CONTROL PERO SOLO ME INTERESA EL PRIMERO.
'EL FILE SE LLENA CON EL CONTENIDO QUE TENGO EN LA CARPETA C:\SoftX\Respaldo\
NombreFicheroNormal = "C:\SoftX\" & Mid(File1.List(0), 1, Len(File1.List(0)) - 4) 'Para tener el puro nombre del archivo
NombresFicherosZip.s(0) = NombreFicheroNormal & ".FBK"
Resultado = ZpInit(FuncionesZip)
Resultado = ZpSetOptions(OpcionesZip)
Resultado = ZpArchive(0, "C:\SoftX\Respaldo\Zipeados\" & NombreFicheroNormal & ".Zip", NombresFicherosZip)
Estoy queriendo poner la aplicación que zipea digamos en una carpeta X, leer de una carpeta Y el archivo para zipear y el archivo zipeado mandarlo a una carpeta Z y me trabo en mandarle el archivo que quiero zipear que se encuentra en otra carpeta.
Debo decir que siempre sera de la misma carpeta pero por temas que no vienen al caso narrar no debo poner la aplicacion que zipea en la misma carpeta de donde leo los archivos.
Espero haberme explicado debidamente, muchas gracias.
RESUMEN POR SIACA (un ejemplo):
En la carpeta C:\SoftX\Respaldo\ tengo archivos backups de base de datos que son de esta forma: Archivo1.FBK
En la carpeta C:\SoftX\Respaldo\Zipeados\ Quiero poner por ejemplo el archivo zipeado de Archivo1.FBK, osea deberá quedar Archivo1.ZIP
Este aplicativo que zipeara digamos por ejemplo que estará en C:\SoftX\
Gracias.
-
Debes agregar en las Referencias Microsoft Scripting Runtime
Private Sub Command1_Click()
Dim Resultado As Long
Dim intContadorFicheros As Integer
Dim FuncionesZip As ZIPUSERFUNCTIONS
Dim OpcionesZip As ZPOPT
Dim NombresFicherosZip As ZIPnames
Dim RutaArchivo As String
Dim RutaDestino As String
FuncionesZip.DLLComment = DevolverDireccionMemoria(AddressOf FuncionParaProcesarComentarios)
FuncionesZip.DLLPassword = DevolverDireccionMemoria(AddressOf FuncionParaProcesarPassword)
FuncionesZip.DLLPrnt = DevolverDireccionMemoria(AddressOf FuncionParaProcesarMensajes)
FuncionesZip.DLLService = DevolverDireccionMemoria(AddressOf FuncionParaProcesarServicios)
RutaArchivo = "C:\carpeta\azipear\"
RutaDestino = "C:\carpeta\zipeado\"
Set fso = New FileSystemObject
Set fold = fso.GetFolder(RutaArchivo)
I = 0
For Each fil In fold.Files
NombresFicherosZip.s(I) = fil.Path
I = I + 1
Next
Resultado = ZpInit(FuncionesZip)
Resultado = ZpSetOptions(OpcionesZip)
Resultado = ZpArchive(I, RutaDestino & "\" & TxtNombreZip.Text & ".Zip", NombresFicherosZip)
End Sub
-
Gracias Enter, voy a probarlo.
Para un archivo especifico ya no tendria que usar esto no?
For Each fil In fold.Files
NombresFicherosZip.s(I) = fil.Path
I = I + 1
NextPorque entiendo que eso es para zipear varios archivos y yo solo quiero zipear uno, es decir todos los dias se generara un archivo, ese archivo quiero zipearlo, moverlo a otra carpeta, luego borrare el archivo y al dia siguiente se generará un nuevo archivo y ese nuevo y unico archivo volver a zipearlo. Logicamente el nombre del archivo esta compuesto por la fecha y la hora.
Entonces sino uso eso ya que alli bastara con esto
NombreFicheroNormal = "C:\SoftX\" & Mid(File1.List(0), 1, Len(File1.List(0)) - 4)
NombresFicherosZip.s(0) = NombreFicheroNormal & ".FBK"
En el control File1 ya tengo cargado el nombre del archivo, aunque no se indica la ruta y por eso mi confusion, voy a ensayar lo tuyo a ver que me resulta.
Gracias
P.D: Doc, la referencia creo que es para crear carpeta ¿o me equivoco? las carpetas ya las creadas. Sino es eso entonces es para recorrer una carpeta, pero no necesito hacerlo porque ya se el archivo que quiero zipear lo que no logro es direccionarlo... seguiré viendo.
-
------------------------------------
Bueno, ando medio torpe, no logro descubrir porque no se crea el zip siendo que el proyecto original si lo hace, yo solo quiero zipear un unico archivo que por otros metodos ya se su nombre, en el adjunto pongo la estructura de las carpetas, de donde tomo el archivo y adonde quiero que vaya.
Ojala me puedan echar una mano, muchas gracias
ProyectoZ (http://dl.dropbox.com/u/4052038/Otros/Origen.rar)
-
No funciona para descarar tu proyecto.
Error (404)
We can't find the page you're looking for. Check out our Help Center and forums for help, or head back to home.
Creo que no se puede indicar solo un archivo sino que lo que existe en un directorio completamente.
Saludos...
-
El descarado proyecto (jeje) no bajaba porque no había terminado de subir.
Ya lo tengo resulto con esto (http://www.recursosvisualbasic.com.ar/htm/ocx-componentes-activex-dll/99-ocx-para-trabajar-con-archivos-zip.htm) que Enter me paso, asi que el problema ya se supero, pero igual me queda la duda de porque el otro proyecto no funcionaba.
-
no encontré lo que te había dicho por msn, pero checkea esto: http://www.recursosvisualbasic.com.ar/htm/ocx-componentes-activex-dll/15-dll-para-comprimir-y-descomprimir-zip.htm
de ser posible no uses ocx, 99% son una porquería y un problema para el OS.
-
Esas son las dlls que estoy usando y las que justamente me dan el inconveniente que no pude resolver.
-
yo me acuerdo de haber viste algo referido a zipear con las librerias standars de Windows echo por @Leandro o @cobein, pero no lo pude encontrar...
-
Acabo de encontrarlo, esta dentro del proyecto Proyecto RAT (parte 1) (http://leandroascierto.com/blog/explorador-remoto-proyecto-en-marcha/) le estoy revisando para extirpar solo esa parte pero aun no la chunto como extraer solo esa funcionalidad.
....
If IsPathZip Then
AppendMenu hMenu, MF_STRING Or IIf(bRead, 0, MF_GRAYED), 16, "Descomprimir"
Else
AppendMenu hMenu, MF_STRING Or IIf(bRead, 0, MF_GRAYED), 15, "Comprimir en Zip"
End If