Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0803: ZIP und UNZIP mit Windows-Bordmitteln (einfaches Beispiel)

 von 

Beschreibung 

Um Dateien oder Ordner in eine ZIP-Datei zu packen oder diese wieder zu entpacken, gibt es bereits viele Beispiele im Internet zu finden.
Meistens verweisen diese jedoch auf zusätzliche DLLs oder Kommandozeilen-Tools, die in bestehende Projekte meist nur aufwändig einzubinden sind.

Folgendes Beipiel zeigt, wie zip und unzip mit der Windows eigenen Shell funktioniert.
Damit das ganze übersichtlich bleibt wurde der Code auf ein Minimum beschränkt.

Wichtig: Die definierten Konstanten müssen Sie vorher natürlich anpassen.

P.S.: Im Beispielprojekt finden Sie einen zusätzlichen Ordner mit einer weiteren Variante ... dort sind die Routinen in eine Klasse gepackt (ist vielleicht sogar übersichtlicher).

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [4,93 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
'------ Anfang Formular "frmTest_Zip" alias Form1.frm  ------
' Steuerelement: Schaltfläche "butUnzip"
' Steuerelement: Schaltfläche "butZIP"
'ACHTUNG:
'   Konstanten zuerst anpassen

Private Const Quelldokument As String = "E:\TEMP\Test.txt"  'Funktioniert auch, wenn ein Ordner angegeben wird
Private Const ZIP As String = "E:\TEMP\Test.zip"
Private Const Ordner As String = "E:\TEMP\Test_entpackt\"
Private ZIPHeader As String

Private Sub ZIP_entpacken(ByVal Zipdatei, ByVal Zielordner)
'Achtung: Übergabe-Variablen Zipdatei und Zielordner müssen als Variant definiert sein
    
Dim SHELL As Object
Set SHELL = CreateObject("Shell.Application")

SHELL.Namespace(Zielordner).CopyHere SHELL.Namespace(Zipdatei).items, Nothing
Set SHELL = Nothing

End Sub

Public Sub Zip_komprimieren(ByVal Quelldatei, ByVal Zipdatei)
    
Dim SHELL As Object
Set SHELL = CreateObject("Shell.Application")
    
'Eine leere Zipdatei erstellen ... wird von der Shell benötigt
'(Achtung: Eine vorhandene Zipdatei wird hier ohne Nachfrage überschrieben)
    CreateEmptyZip Zipdatei
'ZIP-Datei erstellen
    SHELL.Namespace(Zipdatei).CopyHere Quelldatei
    Set SHELL = Nothing

End Sub

Private Sub CreateEmptyZip(ByVal Zipdatei As String)

'Header für ZIP-Datei definieren
    ZIPHeader = Chr(80) & Chr(75) & Chr(5) & Chr(6) & String(18, Chr$(0))
'leere Zipdatei schreiben
    Open Zipdatei For Output As #1
    Print #1, ZIPHeader;
    Close #1

End Sub

Private Sub butZIP_Click()
    Zip_komprimieren Quelldokument, ZIP
    MsgBox "fertig"
End Sub

Private Sub butUnzip_Click()
    ZIP_entpacken ZIP, Ordner
    MsgBox "fertig"
End Sub


'------- Ende Formular "frmTest_Zip" alias Form1.frm  -------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.