Zip and Unzip Using VB5 or VB6

This code shows how to use the freeware InfoZip Zip32.DLL and Unzip32.DLL files from the

http://www.cdrom.com/pub/infozip/ website. I've included the two dll's in the download file at the end of this article.

The InfoZip DLL's are open-source DLL's that are available for programmers to utilise free of charge. They are standard C DLL's and were very tricky/impossible to interface with VB until VB5/6 offered the 'addressof' operator.

About this Code

I based this code on the Zip/Unzip examples that come with the downloadable DLL's and encapsulated that code into re-usable class modules that can either be used in an ActiveX DLL, or just placed into your project as required. The downloadable project contains the source-code for an ActiveX DLL called CGZipLibrary and a sample project which uses that DLL.

The example program simply takes everything in it's own directory and zip's it into a file.

You can then unzip this file straight into the TEMP directory. You can check the structure of the Zip file using WinZip (or similar) if you want to check that the Zip is intact (I've had no problems with it at all).

The Class Modules CGZipFiles and CGUnzipFiles have a lot of properties - it's worth reading through the code in these classes to learn how to get the best from them.

A sample piece of code using the Zip class could be as simple as :



Dim oZip as CGZipFiles

set oZip = new CGZipFiles

oZip.ZipFileName = "\MyZip.Zip"
oZip.AddFile "c:\mystuff\myfiles\*.*"
oZip.AddFile "c:\mystuff\mymedia\*.wav"

If oZip.MakeZipFile <> 0 then
   MsgBox oZip.GetLastMessage
End If

set oZip = nothing


'

The code for Unzipping files is just as straight-forward :


Dim oUnZip as CGUnZipFiles

set oUnZip = new CGUnZipFiles

oUnZip.ZipFileName = "\MyZip.Zip"
oUnZip.ExtractDir = App.Path ' or whatever you like !
oUnZip.HonourDirectories = true ' keep dir structure
If oUnZip.UnZip <> 0 then 
  MsgBox oUnZip.GetLastMessage
End If

set oUnZip = nothing


'
Note : This code is provided as-is - I know that there are a few bugs in the interface to the Zip/Unzip DLL's (including a frustrating one that's got a real cludge work around - see if you can spot it). It's designed as a starting point to allow you to use Zip and Unzip functionality in your programs. You should really place the Zip32.DLL and Unzip32.DLL into your \windows\system directory (although you can just have them in the same directory as the ActiveX DLL)

I've been a version of this code for several weeks in a production application and it's just been superb.

I hope you enjoy the code!



Downloads

Comments

  • Test Engineer

    Posted by Travis Kintz on 07/05/2013 11:44am

    How would I use this to zip a Folder and all folders in it?

    Reply
  • Password

    Posted by thenndral on 01/10/2013 10:07pm

    It works great. How Can I use Password for Zip/Unzip? Please let me know, Is it possible?

    Reply
  • Unzip using vb6

    Posted by Willie on 12/06/2012 09:19am

    hi there all. I am new to vb6, and have succesfully built my first karaoke player. In short, I am trying desperately to add only unzip to my vb6 app.... Basically, i select the zip file from a list, add the full path to a variable. I want to unzip this to my app.path & "\Now" folder... this example seems very straight forwARD, BUT I CANNOT GET IT WORKING ...? Please can someone tell me: a) what dependancies i need to unzip only b) where to store the dependancies (system32 or app path) c) What code to add to unzip a zip file to my folder please...?

    Reply
  • Mr

    Posted by Jack on 10/20/2012 12:12am

    Looks very useful if only I could register the CGZipLibrary.dll.

    Reply
  • Mr

    Posted by Rob Crombie on 07/31/2012 06:38am

    Thanks for sharing. Great solution.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Packaged application development teams frequently operate with limited testing environments due to time and labor constraints. By virtualizing the entire application stack, packaged application development teams can deliver business results faster, at higher quality, and with lower risk.

  • Live Event Date: August 14, 2014 @ 2:00 p.m. ET / 11:00 a.m. PT Data protection has long been considered "overhead" by many organizations in the past, many chalking it up to an insurance policy or an extended warranty you may never use. The realities of today makes data protection a must-have, as we live in a data-driven society -- the digital assets we create, share, and collaborate with others on must be managed and protected for many purposes. Check out this upcoming eSeminar and join Seagate Cloud …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds