Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1032to1036
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
Inhaltsverzeichnis

Makro um Excek zu verzippen

Makro um Excek zu verzippen
13.12.2008 12:30:00
Joachim
Hi,
wenn ich ein Sheet habe, ist es möglich, diese geöffnete Datei (oder eine aktuelle Kopie davon ) per Makro zu verzippen ?
Danke
joachim

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro um Excek zu verzippen
13.12.2008 12:33:00
Hajo_Zi
Hallom Joachim,
Zip Datei erzeugen

Sub MappeSchliessen()
Dim xlsName$, zipName$, Zip$
ActiveWorkbook.Save
xlsName = ActiveWorkbook.FullName
ActiveWorkbook.Close
zipName = Left(xlsName, Len(xlsName) - 4) & ".zip"
Zip = "c:\programme\winzip\winzip32.exe -a "
Shell Zip & zipName & " " & xlsName
End Sub


von Hans W.Herber:

AW: Makro um Excel zu verzippen
13.12.2008 20:37:06
Joachim
hi hajo
wohin legt den das Makro die ZIP ab. Nach dem Ausführen des Codes kommt zwar keine Fehlermeldung aber ich finde nirgens auf meinem Rechner eine neue ZIP.
Gruss
Joachim
Anzeige
AW: Makro um Excel zu verzippen
13.12.2008 20:40:04
Hajo_Zi
Hallo Joachim,
ich habe den Code nie benutzt da ich das Prgramm zip nicht habe. Suche doch mal nach dem Namen der Zip Datei. Ich würde vermute es ist der Ordner der Datei in der der Code ist bzw von ActiveWorkbook
Gruß Hajo
AW: Makro um Excel zu verzippen
13.12.2008 20:50:00
Joachim
Hi,
nein, das hatte ich auch vermutet, aber es ist keine neue ZIP zu finden. Habe mein ganzes LW durchsuchen lassen.
Gruss
Joachim
AW: Makro um Excel zu verzippen
13.12.2008 20:54:00
mumpel
Hallo!
@Joachim
Die Datei befindet sich normalerweise im selben Ordner wie die Datei.
@Hajo
Das Makro hat ein kleines Problem. Nämlich das berühmte Problem mit den Leerzeichen in den Ordnern. Bei C:\Dokumente und Einstellungen....color> oder bei C:\Eigene Dateiencolor> zum Beispiel streicht Winzip die Segel, mit der entsprechenden Fehlermeldung ( Fehler: Für diese Aktion wurden keine Dateien mit diesem Kriterium gefunden - Nichts zu tun! (C:\Dokumente.zip)color> ).
Gruß, René
Gruß, René
Anzeige
AW: Makro um Excel zu verzippen
13.12.2008 21:04:25
Joachim
Hi Rene
habe ein Verzeichnis erstelt, ohne Leerzeichen und die Mappe dort rein gemacht, Code lässt sich zwar ausführen, denn schliesst sich das Tabellenblatt und dann ist schluss
nirgends eine neue Datei zu findn.
Gruss
Joachim
AW: Makro um Excel zu verzippen
13.12.2008 21:09:00
mumpel
Kann ich jetzt nicht nachvollziehen. Prüfe mal Dein Antivirenprogramm. Möglicherweise löscht da jemand wieder!?
Geht es bei Dir ?
13.12.2008 21:45:32
Joachim
Hi,
habe alles ausgeschaltet, Firewall, Virenscanner , keine Datei !!!
Kann man halt nichts machen
Gruss
Joachim
AW: Geht es bei Dir ?
17.12.2008 14:29:00
fcs
Hallo Joachim und René,
die an WinZip oder ein anderes Programm übergebenen Dateinamen müssen in Anführungszeichen gesetzt werden, dann ist auch das Problem mit Leerzeichen/Sonderzeichen im Verzeichnis-/Dateinamen beseitigt.
Das Makro selber darf natürlich nicht in der zu Zippenden Datei gespeichert sein, sondeern muss in einer anderne Datei (z.B. PERSONL.XLS) gespeichert werden.
Gruß
Franz

Sub ZipAktiveDatei()
Dim xlsName$, zipName$, Zip$, wb As Workbook
On Error GoTo fehler
Set wb = ActiveWorkbook
With wb
If .Saved = False Then
.Save
End If
xlsName = .FullName
.Close
End With
zipName = Left(xlsName, Len(xlsName) - 4) & ".zip"
Zip = "c:\programme\winzip\winzip32.exe -a "
Shell Zip & """" & zipName & """ """ & xlsName & """"
fehler:
With Err
If .Number  0 Then
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End If
End With
End Sub


Anzeige
AW: Geht es bei Dir ?
18.12.2008 18:46:00
Joachim
Danke Franz,
muss ich mal testen. Melde mich wieder.
Gruss
Joachim
Teste mal diese Version.
17.12.2008 14:29:47
Tino
Hallo,
versuche es mal mit diesem Code.
Gestartet wird über Sub StartZip()
Die Datei wird zuerst gespeichert, danach wird eine Kopie im Temp- Ordner gespeichert.
Aus dieser Kopie wird die Zip- Datei erstellt und die Kopie am Ende wieder gelöscht.
Option Explicit

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
    If IsMissing(WindowState) Then WindowState = 1
    hProg = Shell(PathName, WindowState)
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
    Do

        GetExitCodeProcess hProcess, ExitCode
        DoEvents
    Loop While ExitCode = STILL_ACTIVE
End Sub
 
 
Sub UnZip_ZipFile_1(FileNameZip As String, FolderName As String, Optional zipOp As String)
    Dim PathWinZip As String
    Dim ShellStr As String
    PathWinZip = "C:\program files\winzip\"
    If Dir(PathWinZip & "winzip32.exe") = "" Then
        MsgBox "Please find your copy of winzip32.exe and try again"
        Exit Sub
    End If

    ShellStr = PathWinZip & "Winzip32 -min " & zipOp _
             & " " & Chr(34) & FileNameZip & Chr(34) _
             & " " & Chr(34) & FolderName & Chr(34)
    
    ShellAndWait ShellStr, vbHide

End Sub

Sub StartZip()
Dim strPfad As String, tempPfad As String

' erst mal speichern 
ThisWorkbook.Save
'speicherpfad ermitteln 
strPfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
'Temp Ordner ermitteln + Dateiname 
tempPfad = IIf(Right$(Environ$("TEMP"), 1) = "\", Environ$("TEMP"), Environ$("TEMP") & "\") & ThisWorkbook.Name
'tempDatei erstellen 
ThisWorkbook.SaveCopyAs tempPfad
'Zip- File erstellen 
UnZip_ZipFile_1 strPfad & "NeuerDatei.zip", tempPfad, "-a"
    
Kill tempPfad 'tempadatei löschen 
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Teste mal diese Version.
18.12.2008 18:38:27
Joachim
Hallo Tino,
sorry, bin jetzte erst dazu gekommen. Funktioniert aber prima, Vielen Dank.
Noch eine Frage: kann man die Zip in deinem Beispiel auch mit einem Passwort versehen ?
Danke
Joachim
Hallo Tino schaust Du mal in mein Eintrag 18:38
18.12.2008 20:05:14
Joachim
Habe noch ne Fragen wegen Passwort,
Danke
Joachim
bin am testen, ich melde mich oT.
18.12.2008 20:48:00
Tino
Supi, Danke oT
18.12.2008 20:52:00
Joachim
geht nicht.
18.12.2008 22:40:00
Tino
Hallo,
also ich bekomme es nicht hin, bin mir aber auch nicht Sicher ob dies überhaupt machbar ist.
Hier gibt es aber noch etwas dafür, werde ich mal testen aber heute nicht mehr.
http://www.winzip.de/downcl.htm
Gruß Tino
damit geht es.
19.12.2008 01:33:10
Tino
Hallo,
hiermit geht es ganz einfach, Datei kann auch verwendet werden.
http://www.winzip.de/downcl.htm
Sub StartZip()
Dim sPfad As String
Dim sZipName As String

'Passwort, beachte Winzip Optionen Kennwörter 
Const myPass As String = "tinoseibt"
'Zip File Name 
sZipName = "myExcel.zip"
'Datei erst mal speichern 
ThisWorkbook.Save
'Speicherpfad 
sPfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
'Zip erstellen über WZZIP.EXE 
Shell ("c:\programme\winzip\wzzip -s" & myPass & " -ycAES256 " & sPfad & sZipName & " " & ThisWorkbook.FullName)

End Sub


Gruß Tino

Anzeige
AW: damit geht es.
19.12.2008 11:54:00
Joachim
Hi Tino,
wo wird denn die Datei (Zip) abgelegt ? Code läuft durch, man sieht auch, es passiert kurz was, aber die datei finde ich nachher nicht, auch nicht im selben verzeichnis,
Hast Du noch Dein Beispiel als excel zum testen ? vielleicht mache ich ja was falsch.
danke
Joachim
AW: damit geht es.
19.12.2008 12:35:02
Tino
Hallo,
habe mal noch etwas getestet, der Pfad sollte in eine Dos kompatible Schreibweise gewandelt werden.
'Option Explicit 
Private Declare Function GetShortPathNameA Lib "kernel32" ( _
    ByVal lpszLongPath As String, _
    ByVal lpszShortPath As String, _
    ByVal cchBuffer As Long) As Long
Public Function ShortPath(ByRef Path As String) As String
  Dim n As Long
 
  ShortPath = Space$(256)
  n = GetShortPathNameA(Path, ShortPath, 255)
  ShortPath = Left$(ShortPath, n)
End Function

Sub StartZip()
Dim sPfad As String
Dim sZipName As String

'Passwort, beachte Winzip Optionen Kennwörter 
Const myPass As String = "meinpasswort"
'Zip File Name 
sZipName = "myExcel.zip"
'Datei erst mal speichern 
ThisWorkbook.Save
'Speicherpfad 
sPfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
sPfad = ShortPath(sPfad)
'Zip erstellen über WZZIP.EXE 
Shell ("c:\programme\winzip\WZZIP.EXE -s" & myPass & " -ycAES " & sPfad & sZipName & " " & ShortPath(ThisWorkbook.FullName))

End Sub


Beachte auch die Optionen zum verschlüsseln.
Userbild
Gruß Tino

Anzeige
AW: damit geht es.
19.12.2008 12:42:00
Tino
Hallo,
Du musst auch darauf achten, dass wie in den Optionen von WinZip unter Kennwörter
Eingestellten Parameter deines Kennworts gegeben sind, sonst passiert auch nichts.
Userbild
Gruß Tino
Hier eine Beispieldatei...
19.12.2008 14:27:45
Tino
Hallo,
..., diese vorher irgendwo abspeichern.
https://www.herber.de/bbs/user/57745.xls
getestet mit WinZip12 und WinZip Command unter Vista.
Gruß Tino
AW: Hier eine Beispieldatei...
19.12.2008 16:32:00
Joachim
Hallo Tino,
also Deine Beispiel Datei geht bei mir auch nicht. der Code läuft zwar und macht kurz was, aber dann ist wieder schluss. Kommt aber auch keine Fehlermeldung. Habe den ganzen rechner nach einer neuen ZIP durchsuchen lassen, nichts gefunden.
Ich vermute, das hat was mit meiner ZIP Version zu tun.
Hat kein wert, da weiter zu machen. Schade, aber trotzdem vielen, vielen dank für die Hilfe.
Gruss
Joachim
Anzeige
welche Version hast Du? oT.
19.12.2008 16:39:56
Tino
9.0 SR-1 (6224g) oT
19.12.2008 18:12:00
Joachim
geht erst ab V. 10 oT.
19.12.2008 18:20:18
Tino
Schade, trotzdem Danke :-) oT
19.12.2008 19:01:32
Joachim
AW: Makro um Excek zu verzippen
13.12.2008 12:34:36
mumpel
Hallo!
Solange die Arbeitsmappe geöffnet ist, können Winzip & Co. nicht darauf zugreifen. Daher ist es einfach und schneller, es manuell zu machen. Datei schließen und dann über das Datei-Kontextmenü komprimieren.
Gruß, René
AW: Makro um Excek zu verzippen
15.12.2008 08:39:00
yusuf
Hi,
das Makro speichert und schliesst danach das ActiveWorkbook, danach soll es im Code weitermachen.
Falls du nun das Makro im ActiveWorkbook drin stehen hast kann er im Code nicht weitermachen, da das Workbook ja geschlossen ist.
Gruß
Yusuf

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige