Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Carlos_C am Juli 02, 2015, 15:02:13

Titel: Mit Shell Ordner zippen aber mit Variablen
Beitrag von: Carlos_C am Juli 02, 2015, 15:02:13
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???
Titel: Re: Mit Shell Ordner zippen aber mit Variablen
Beitrag von: daolix am Juli 02, 2015, 18:39:17
Hallo

Shell ( Var1 & " a " & Var2 & " " & Var3 & " -r")
Titel: Re: Mit Shell Ordner zippen aber mit Variablen
Beitrag von: Carlos_C am Juli 03, 2015, 09:23:32
Super! Hat wunderbar funktioniert! Vielen Dank, DaoliX
Titel: Re: Mit Shell Ordner zippen aber mit Variablen
Beitrag von: Carlos_C am Juli 03, 2015, 11:28:47
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!
Titel: Re: Mit Shell Ordner zippen aber mit Variablen
Beitrag von: daolix am Juli 03, 2015, 12:09:18
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)

Titel: Re: Mit Shell Ordner zippen aber mit Variablen
Beitrag von: Carlos_C am Juli 03, 2015, 13:01:48
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
Titel: Re: Mit Shell Ordner zippen aber mit Variablen
Beitrag von: daolix am Juli 03, 2015, 13:56:00
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.
Titel: Re: Mit Shell Ordner zippen aber mit Variablen
Beitrag von: Carlos_C am Juli 03, 2015, 15:10:27
Alles klar, vielen Dank, Daolix!