Discussion:
Excel-Datei automatisch vor dem Schließen zippen
(zu alt für eine Antwort)
Walter
2007-08-22 10:38:41 UTC
Permalink
Hallo,

ich habe mal wieder ein VBA-Problem. Ich muss zukünftig Excel-Dateien
vor dem Schließen zippen. Die Dateien werden von einigen Kollegen
eingesehen, jedoch nicht vor Ort, sondern von ganz Deutschland. Häufig
gibt es das Problem, dass die Dateien zu mächtig sind. Daher möchte
ich, dass das "private sub" die Zip- oder Rar-Datei vorher erstellt.
Leider fehlt mir jedoch die Kenntnis wie ich das umsetzen kann. Ich
hatte von einen Bekannten gehört, dass das möglich sei.

Wer kann mir helfen?

Gruß
Walter
Dietmar Vollmeier
2007-08-22 12:03:52 UTC
Permalink
Servus Walter!

*Walter* schrieb am 22.08.2007 um 10:38 Uhr...
Post by Walter
ich habe mal wieder ein VBA-Problem. Ich muss zukünftig Excel-Dateien
vor dem Schließen zippen. Die Dateien werden von einigen Kollegen
eingesehen, jedoch nicht vor Ort, sondern von ganz Deutschland. Häufig
gibt es das Problem, dass die Dateien zu mächtig sind. Daher möchte
ich, dass das "private sub" die Zip- oder Rar-Datei vorher erstellt.
Leider fehlt mir jedoch die Kenntnis wie ich das umsetzen kann. Ich
hatte von einen Bekannten gehört, dass das möglich sei.
Vielleicht nicht ganz das Gewünschte, aber ein Ansatz:

Du kannst eine Excel-Datei aus einem Zip-Archiv heraus öffnen und
bearbeiten. Beim Schließen der Datei wirst du dann gefragt, ob du das
Archiv aktualisieren möchtest.

Somit bist du mit der Zip-Datei immer aktuell.


und tschüss,
Didi
--
"Wenn ich die Folgen geahnt hätte, wäre ich Uhrmacher geworden."
--> Albert Einstein
Walter
2007-08-22 13:44:29 UTC
Permalink
Post by Dietmar Vollmeier
Servus Walter!
Du kannst eine Excel-Datei aus einem Zip-Archiv heraus öffnen und
bearbeiten. Beim Schließen der Datei wirst du dann gefragt, ob du das
Archiv aktualisieren möchtest.
Somit bist du mit der Zip-Datei immer aktuell.
und tschüss,
Didi
--
"Wenn ich die Folgen geahnt hätte, wäre ich Uhrmacher geworden."
--> Albert Einstein
Vielen Dank Didi!

Leider ist die Lösung nicht das was ich suche. Kannst du mir auch
einen alternativen VBA-Code nennen?

Gruß
Walter
Dietmar Vollmeier
2007-08-22 13:55:31 UTC
Permalink
*Walter* schrieb am 22.08.2007 um 13:44 Uhr...
Post by Walter
Post by Dietmar Vollmeier
Servus Walter!
Du kannst eine Excel-Datei aus einem Zip-Archiv heraus öffnen und
bearbeiten. Beim Schließen der Datei wirst du dann gefragt, ob du das
Archiv aktualisieren möchtest.
Somit bist du mit der Zip-Datei immer aktuell.
Leider ist die Lösung nicht das was ich suche. Kannst du mir auch
einen alternativen VBA-Code nennen?
Leider nein, so gut bin ich in VBA auch nicht drauf.


und tschüss,
Didi
--
Aus technischen Gründen befindet sich die Signatur auf der Rückseite
dieser News!
Walter
2007-08-23 10:30:29 UTC
Permalink
Hallo,

ich habe mal wieder ein VBA-Problem. Ich muss zukünftig Excel-Dateien
vor dem Schließen zippen. Die Dateien werden von einigen Kollegen
eingesehen, jedoch nicht vor Ort, sondern von ganz Deutschland.
Häufig
gibt es das Problem, dass die Dateien zu mächtig sind. Daher möchte
ich, dass das "private sub" die Zip- oder Rar-Datei vorher erstellt.
Leider fehlt mir jedoch die Kenntnis wie ich das umsetzen kann. Ich
hatte von einen Bekannten gehört, dass das möglich sei.

Gruß
Walter
Post by Dietmar Vollmeier
Leider nein, so gut bin ich in VBA auch nicht drauf.
und tschüss,
Didi
--
Aus technischen Gründen befindet sich die Signatur auf der Rückseite
dieser News!
Hi Didi,

schade - ich habe jedoch noch die Hoffnung, dass irgend jemand mir bei
der Lösung des Problems helfen kann!!!!

Gruß
Walter
andym@nowhere
2007-08-23 13:44:08 UTC
Permalink
Hallo Walter,

ohne, daß ich es versucht hätte sollte folgender Ansatz funktionieren:

1) Event abfangen, der VOR dem Schliessen der Datei wirkt (keine
Ahnung, was es da gibt)
1.1) Fall es keinen passenden Event gibt dies über einen Button
realisieren; diesen dann halt "sinnvoll" benamen ("Speichern, Zippen
und Schliessen")
2) Nach dem Event eine Funktion starten, die folgendes macht:
2.1) Aufruf externes Programm (geht soweit ich weiß in VBA), z.B.
WinZip und entsprechende Parameter zum Zippen mitgeben. Hierzu in der
Hilfe des Kompressionsprogramms nachschauen, welche
Kommandozeilenparameter es gibt.
2.2) Eventuell vom Kompressionsprogramm zurück gegebene Codes abfangen
und auswerten (^= ist zippen erfolgreich gewesen?)
3) Schließen der Excel-Datei

Ich schau mal, ob ich heute abend dazu komme, mir ein paar Funktionen
anzuschauen.

HTH,

Andy
andym@nowhere
2007-08-23 14:00:18 UTC
Permalink
Hallo Walter,

hier eine" Quick and Dirty" Lösung, die bei mir funktioniert:

Die Excel-Datei test.xls enthält ein paar Worksheets sowie auf einem
der Worksheets einen Button "Schaltfläche1". Beim Klick auf diese
Schaltfläche wird unten stehendes Programm aufgerufen:


Sub Schaltfläche1_BeiKlick()

Dim Ergebnis
Ergebnis = Shell("c:\programme\winzip\wzzip c:\tmp\wzip\test.zip c:\tmp
\wzip\test.xls", 1)

' c:\programme... ist der Pfad zum Kompressionsprogramm
' c:\tmp\wzip\test.zip ist der Name der zu erstellenden gezippten
Datei
' c:\tmp\wzip\test.xls ist der Name der Datei, die gezippt werden soll

End Sub

In der Hilfe zum Befehl "Shell" findest Du quasi das selbe Programm,
dort halt mit Aufruf von calc.exe (dem Taschenrechner von Windows).

Voraussetzung für den Erfolg des Befehls ist:
- Winzip ist installiert (ich hoffe, daß bei der normalen WinZip
Installation die Erweiterung(?) wzzip, die die
Kommandozeilenfunktionen bietet, installiert wird)

HTH,

Andy

P.S.: Viel Spaß beim ausbauen ;-)
Jörg Eisenträger
2007-08-23 17:23:08 UTC
Permalink
Hi,
Post by ***@nowhere
1) Event abfangen, der VOR dem Schliessen der Datei wirkt (keine
Ahnung, was es da gibt)
Workbook_BeforeClose
Als erstes sollte sie die Datei speichern oder prüfen, ob gespeichert.
Sonst hat man evtl. nicht die aktuelle Fassung im Zip.


Gruß
Jörg
--
LPs auf CD brennen - so geht's: http://www.joergei.de/
E-Mail-Adresse existiert, wird aber nicht gelesen.
andym@nowhere
2007-08-24 06:43:30 UTC
Permalink
Hallo Jörg,

zuerst mal danke für die Benennung des Events. Schon wieder was
gelernt ;-)

Das mit dem vorab speichern und prüfen ist extrem wichtig, da hätte
ich selber (vermutlich) nicht dran gedacht. Aber Walter soll ja auch
was machen ;-)

Gruß,

Andy
unknown
2007-08-24 19:08:39 UTC
Permalink
Post by Walter
Hallo,
ich habe mal wieder ein VBA-Problem. Ich muss zukünftig Excel-Dateien
vor dem Schließen zippen. Die Dateien werden von einigen Kollegen
eingesehen, jedoch nicht vor Ort, sondern von ganz Deutschland. Häufig
gibt es das Problem, dass die Dateien zu mächtig sind. Daher möchte
ich, dass das "private sub" die Zip- oder Rar-Datei vorher erstellt.
Leider fehlt mir jedoch die Kenntnis wie ich das umsetzen kann. Ich
hatte von einen Bekannten gehört, dass das möglich sei.
Wer kann mir helfen?
M.E. nach wird das recht umständlich.
Du musst aus einer anderen Quelle heraus - hier bietet sich die berühmte
Persönliche Makormappe (PERSONL.XLS) an - die bewusste Datei speichernd
schließen
ActiveWorkbook.Close (True)
und dann - besser ist das - mit ShellX (googeln!) was ein externes
ZIP-Programm aufruft das Packen durchführen (mir fiele da spontan nur
WinZIps Command Line Interface ein).
Den Vorschlag, das Speichern zu prüfen, wäre gewiss nicht verkehrt.
Allerdings wüsste ich nicht wie ich schnell mal die Eigenschaften der
geschlossenen Mappe abfrage (also schnöde mir das ansähe was mir DOS'
DIR liefert).

Hintergrund ist, dass sich die offene Datei nicht selbst ZIPen kann so
lange sie offen ist!

Eric March
Jörg Eisenträger
2007-08-25 11:24:21 UTC
Permalink
Hallo Eric,
Post by unknown
Hintergrund ist, dass sich die offene Datei nicht selbst ZIPen kann so
lange sie offen ist!
Ich hab's nicht probiert. Laut Andys Test geht es ja doch.

Falls nicht ...
Post by unknown
Du musst aus einer anderen Quelle heraus - hier bietet sich die berühmte
Persönliche Makormappe (PERSONL.XLS) an - die bewusste Datei speichernd
schließen
... würde ich es anders machen, nämlich die Datei per eigenem Code
speichern und schließen und in BeforeClose dann das zip-Makro in einer
anderen Datei aufrufen. Falls Parameter zu übergeben sind, kopiere ich
die vorher in diese zweite Datei.
Wir machen so etwas. Da ist die zweite Datei eine Vorlage.

Oder andere Variante: Temporäre Kopie von sich selbst erstellen und die
Kopie zippen und wieder löschen, alles in BeforeClose.
Post by unknown
und dann - besser ist das - mit ShellX (googeln!)
ACK, geniales Tool.
Post by unknown
Allerdings wüsste ich nicht wie ich schnell mal die Eigenschaften der
geschlossenen Mappe abfrage (also schnöde mir das ansähe was mir DOS'
DIR liefert).
GetAttr


Gruß
Jörg
--
LPs auf CD brennen - so geht's: http://www.joergei.de/
E-Mail-Adresse existiert, wird aber nicht gelesen.
Loading...