Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
904to908
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Alle Dateien in einem Verzeichnis als Zip-Datei

Alle Dateien in einem Verzeichnis als Zip-Datei
06.09.2007 19:05:50
Kasimir

Hallo an alle!
Ich habe ein Problem mit einem Code, den ich im Netz gefunden habe. Mit nachfolgendem Code werden alle Dateien in einem Verzeichnis als Zip-Datei mit dem Standard-Zippprogramm von WindowsXP verpackt.
Option Explicit


Sub NewZip(sPath)
If Len(Dir(sPath)) > 0 Then Kill sPath
Open sPath For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
End Sub



Function bIsBookOpen(ByRef szBookName As String) As Boolean
On Error Resume Next
bIsBookOpen = Not (Application.Workbooks(szBookName) Is Nothing)
End Function



Function Split97(sStr As Variant, sdelim As String) As Variant
Split97 = Evaluate("{""" & _
Application.Substitute(sStr, sdelim, """,""") & """}")
End Function



Sub Export_Zip_Datei_erzeugen()
Dim FileNameZip, ZipPath
Dim strDate As String, savePath As String
Dim oApp As Object
'Pfad, in das die Zipdatei abgelegt werden soll
savePath = "C:\"
'Pfad, der verpackt werden soll
ZipPath = "C:\Export\"
FileNameZip = savePath & "Export.zip"
On Error Resume Next
Kill FileNameZip
'Create empty Zip File
NewZip (FileNameZip)
Set oApp = CreateObject("Shell.Application")
'Copy the files to the compressed folder
oApp.Namespace(FileNameZip).CopyHere oApp.Namespace(ZipPath).items
'Keep script waiting until Compressing is done
On Error Resume Next
Do Until oApp.Namespace(FileNameZip).items.Count = oApp.Namespace(ZipPath).items.Count
Application.Wait (Now + TimeValue("0:00:01"))
Loop
On Error GoTo 0
Set oApp = Nothing
End Sub


Das funktioniert auch soweit. Allerdings gibt es Probleme, wenn z.B. WinZip installiert ist. Dann erhalte ich folgende Fehlermeldung
Ausgabedatei kann nicht erstellt werden.
Woran kann das liegen, bzw. wie kann ich die Daten verpacken egal welches Programm installiert ist?
Danke Euch und Gruß,
Kasimir

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle Dateien in einem Verzeichnis als Zip-Date
07.09.2007 08:56:47
Renee
Hi Kasimir,
Mit Winzip musst Du das Command Line Add-On installieren und den Code entsprechend anpassen.
Greetz Renee

AW: Alle Dateien in einem Verzeichnis als Zip-Date
07.09.2007 12:16:16
Kasimir
Hallo Renee,
sorry, dass ich erst jetzt reagiere. Danke Dir für Deine Antwort.
Was muss ich denn, nachdem ich das AddIn von WinZip installiert habe, wo ändern, bzw. anpassen, dass ich sowohl mit dem Windows eigenen Zip-Programm, als auch wenn ich WinZip installiert habe, Daten mit WinZip verpacken kann?
Sorry, aber das bekomme ich alleine nicht hin.
Danke und Gruß,
Kasimir

Habe das Problem mit einer anderen Variante gelöst
09.09.2007 17:27:34
Kasimir
Hallo André,
danke Dir für Deine Antwort und die Links. Ich habe mich aber für eine unabhängige Lösung entschieden. Das bedeutet, ich verpacke die Daten nicht mit dem WindowsXp eigenen Zip-Programm oder WinZip oder oder oder, sondern ich nehme eine Freeware-Dll-Datei und mache es damit.
Als dll-Datei nehme ich " Zip.dll ", die man unter
http://xstandard.com
kostenlos bekommt.
Das Makro dafür sieht dann folgendermaßen aus.


Sub Export_Zip_Datei_erzeugen()
Dim objZip As Object
Dim FileNameZip
Dim ZipPath
Dim savePath As String
'Verweis auf Zip.dll aktivieren
ActiveWorkbook.VBProject.References.AddFromFile ThisWorkbook.Path & "\XZip.dll"
'Pfad und Datei, in das die Zipdatei abgelegt werden soll
savePath = Mid(ThisWorkbook.Path, 1, Len(ThisWorkbook.Path) - 8) & "tmp\"
FileNameZip = savePath & "Export.zip"
On Error Resume Next
Kill FileNameZip
On Error GoTo 0
'Pfad und Datei, das verpackt werden soll
ZipPath = Mid(ThisWorkbook.Path, 1, Len(ThisWorkbook.Path) - 8) & "Export\"
On Error GoTo Zip_Fehler
Set objZip = CreateObject("XStandard.Zip")
objZip.Pack ZipPath, FileNameZip
Set objZip = Nothing
End Sub


Funktioniert bestens und ich bin unabhängig vom Zipprogramm, das jeder unserer Vertriebler auf seinem Laptop installiert hat.
Eine Frage hätte ich da aber noch: Wie kann ich einen Verweis deaktivieren? Wie man in dem Makro sieht, aktiviere ich vor dem Verpacken den Verweis auf die dll-Datei. Allerdings gibt es einen Fehler, wenn dieser bereits aktiviert ist. Daher wollte ich den vorher deaktivieren, um ihn dann wieder aktivieren zu können. Leider bin ich in der Recherche nicht fündig geworden, wie man einen Verweis deaktiviert.
Nochmal Danke an alle,
Kasimir

Anzeige
AW: Habe das Problem mit einer anderen Variante gelöst
10.09.2007 10:28:13
Kasimir
Hallo André,
danke Dir für Deine erneute Antwort. Der Link hat mir bestens weitergeholfen.
Schönen Tag noch,
Kasimir

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige