Hallo Forum,
mit folgendem Code:
Shell ("C:\Program Files\Utils\7-Zip\7z.exe a C:\Test\Test2.zip C:\Test\Test1\*.* -r")
Kann ich mit dem 7z den Ordner "C:\Test\Test1" zippen, und die zip Datei heißt "Test2.zip.
Funktioniert wunderbar.
Ich möchte aber das Ganze jetzt mit Variablen machen, also
Var1 = "C:\Program Files\Utils\7-Zip\7z.exe"
Var2 = "C:\Test\Test2.zip"
Var3 = "C:\Test\Test1\*.*"
Geht das???
Hallo
Shell ( Var1 & " a " & Var2 & " " & Var3 & " -r")
Super! Hat wunderbar funktioniert! Vielen Dank, DaoliX
Hallo daolix,
ich habe noch ein kleines Problem hier:
Also, nach dem
Shell ( Var1 & " a " & Var2 & " " & Var3 & " -r")
Soll das Programm die erzeugte ZIP Datei in einen anderen Ordner kopieren, und zwar mit dem Befehl
Fs.Copyfile AnfangPfad, ZielPfad
Das System meckert aber mit einem
,,Laufzeitfehler ,53': Datei nicht gefunden"
Das ,,Fs.Copyfile" funktioniert sonst immer (wird innerhalb des gleichen Codes schon problemlos benutzt, vorher mit der Deklaration
Dim Fs As Object
Und
Set Fs = CreateObject("scripting.filesystemobject")
Ich gehe davon aus, dass der "Fs.Copyfile" Befehl nicht funktioniert, weil in dem Moment, dass er ausgeführt wird, die zip-Datei noch nicht fertig erzeugt ist (es werden ein paar Sekunden gebraucht, bis die zip-Datei fertig ist).
Dann habe ich hier eine Frage:
Kann man per VBA den Befehl geben: Warte bis die zip-Datei da ist, und dann führt den Befehl ,,Fs.Copyfile" aus?
Freue mich auf jeden Vorschlag!
Hallo
ZitatIch gehe davon aus, dass der "Fs.Copyfile" Befehl nicht funktioniert, weil in dem Moment, dass er ausgeführt wird, die zip-Datei noch nicht fertig erzeugt ist (es werden ein paar Sekunden gebraucht, bis die zip-Datei fertig ist).
Genau das ist der Grund
ich sehe 3 Möglichkeiten:
entweder du startest einen wartenden Shellaufruf für das Zippen (hab jetzt aber gerade den entsprechenden befehl nicht zur Hand), oder du erstellst automatisiert eine Batch die das Zippen wie auch das Kopieren beinhaltet. In der Batch müssest du dann aber mit dem Dosen-Copy befehl arbeiten oder bei Var2 gibst du gleich den richtigen Path für die Zip-Datei an.
PS:
Wartenden Shell: probier mal
Set w = CreateObject("WScript.Shell")
lret = w.Run(var1 & " a " & var2 & " " & var3 & " -r", SW_SHOWNORMAL, True)
Habe das gelöst:
Shell ( Var1 & " a " & Var2 & " " & Var3 & " -r")
Do
Dir (Pfad\*.*")
Loop Until Dir(zip-Dateiname) <> ""
If (MsgBox("Möchten die Datei X herunterladen?", 4)) = vbYes Then
Fs.Copyfile AnfangPfad, ZielPfad
Else
End If
kannste jetzt so machen, nur solltest du bedenken das bei einer evtl. nichterstellung der Zip aus irgendwelchen gründen auch immer, dein Access im kreis läuft. Die Zeile Dir (Pfad\*.*") ergibt zudem kein Sinn.
Alles klar, vielen Dank, Daolix!