Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1056to1060
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

Warten, bis shell geschlossen ist

Warten, bis shell geschlossen ist
05.03.2009 15:18:45
Tobias
Hallo Allerseitigst,
Ich führe eine Shell-Aufruf durch
Shell "ftp -s:" ....
Gibts eine Möglichkeit, mit der weiteren Ausführung so lange zu warten, bis die Shell wieder
geschlossen ist?
Ich befürchte ja, dass nicht :(
Best,
Tobias

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Sleep
05.03.2009 15:26:36
Beate
Hallo Tobias,
Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub Dateiupload()
    'Hier dein Aufrufcode
    'dadurch wartet das Makro 10 Sek. mit dem weiterlaufen - dieser Wert kann verändert werden:
    Sleep 10000
    'und hier dein Folgecode
End Sub


Dabei muss die Deklaration von Sleep ganz oben stehen.
Gruß,
Beate
Anzeige
AW: Sleep
05.03.2009 15:32:51
Oberschlumpf
Hi Beate
Zuerst dacht ich: "Wow, besser und weniger Code als das, was ich fand"
Aber leider stellte ich dann beim Testen von Sleep fest, dass für 10 Sek. gar nix mehr geht.
Es erscheint die Eieruhr, ich kann keine Zelle anklicken, Excel wird komplett weiß (außer Titelzeile).
Hast du da ne Idee?
Ciao
Thorsten
AW: Sleep
05.03.2009 15:49:10
Beate
Hallo Thorsten,
dass gar nichts mehr geht, stimmt nicht ganz: In der Zeit lädt der PC ja Daten ins Netz.
Sinn ist meist, sicherzustellen, dass dieser Vorgang beendet ist, weil im Folgecode z.B. irgendwelche Hilfsdateien gelöscht werden, die während des Uploads noch benötigt werden.
Aber es stimmt, die Eieruhr erscheint und man kann keine Eingaben machen. Aber mein Excel wird nicht komplett weiß.
Gruß,
Beate
Anzeige
AW: Sleep
05.03.2009 16:08:02
Marc
Hallo,
mit Sleep bleibt der Code an genau der Stelle für die Zeit stehen. Es passiert nichts ab Sleep...
AW: Warten, bis shell geschlossen ist
05.03.2009 18:28:59
IngGi
Hallo Tobias,
falls du noch nicht fündig geworden bist, hier noch eine Möglichkeit ohne API:

CreateObject("WScript.Shell").Run "ftp -s:", 1, True


Gruß Ingolf

Anzeige
@ingo Die CreateObject methode klappt leider nicht
07.03.2009 15:58:52
Tobias
Hallo Ingo,
Ich habs so probiert:
CreateObject("WScript.Shell").Run "ftp -s:" & shortpath & "\sync.txt " & Worksheets("Einstellungen").[A3], showshell
Das shell wird auch ausgeführt, nur von warten keine Spur.
liegt vielleicht daran, das ich den letzten Teil:
,1,True
weggelassen hab, weil ichs syntax-mässig nicht geschaft hab, den ohne Fehlermeldung anzuhängen.
Wie mach ich das?
Grüss,
Tobias
AW: Warten, bis shell geschlossen ist
05.03.2009 15:42:15
Marc
Hallo,
hiermit sollte es funktionieren...
Marc
Option Explicit
Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessID As Long
dwThreadID As Long
End Type
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _
lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
lpStartupInfo As STARTUPINFO, lpProcessInformation As _
PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal _
hObject As Long) As Long
Private Const NORMAL_PRIORITY_CLASS = &H20&
Private Const INFINITE = -1&

Public Sub SartShell_Wait(cmdline$)
Dim proc As PROCESS_INFORMATION
Dim start As STARTUPINFO
Dim ReturnValue As Integer
' Initialisiert die STARTUPINFO Struktur:
start.cb = Len(start)
' Startet die Shell-Anwendung:
ReturnValue = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, _
NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)
' Wartet bis Shell-Anwendung geschlossen ist:
Do
ReturnValue = WaitForSingleObject(proc.hProcess, 0)
DoEvents
Loop Until ReturnValue  258
ReturnValue = CloseHandle(proc.hProcess)
End Sub


Sub undlos()
Call SartShell_Wait("calc.exe") 'als Beispiel
MsgBox " ich bin jetzt weg "
End Sub


Anzeige
AW: Syntax-Anfängerproblem (schätz ich mal)
07.03.2009 02:08:07
Tobias
Vielen Dank allerseits!
@Marc
Deine Lösung funktioniert kopiert schon mal gut,
ich habe aber ein Problem mit der Syntax:
Shell "ftp -s:" & shortpath & "\sync.txt " & Worksheets("Einstellungen").[A3], showshell
müsste ich in diese Form bringen Call StartShell_Wait("xyz")
Call StartShell_Wait ("ftp -s:" & shortpath & "\sync.txt " & Worksheets("Einstellungen").[A3], showshell")
Hat nicht geklappt, wohl wegen der Anführungszeichen...
Ich weiß, sicher ein Anfängerproblem, aber: kannst du mir helfen?
Besten Dank,
Tobias
Anzeige
Wohl doch kein Anfängerproblem
07.03.2009 15:27:14
Tobias
Hallo nochmal
Call StartShell_Wait("ftp -s:" & shortpath & "\sync.txt " & Worksheets("Einstellungen").[A3], showshell)
So sollte es jetzt syntaxmässig passen, klappt aber leider nicht:
Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft
Gruss,
Tobias
Zauberstab oder Glaskugel oder...
07.03.2009 15:29:04
Josef
... deine Mappe mit dem Code des Makros "StartShell_Wait", würde sicher helfen.
Gruß Sepp

AW: Zauberstab oder Glaskugel oder...
07.03.2009 15:37:39
Tobias
Hallo!
Es ist der Code von Marc, direkt in diesem Thread.
Ich habe nix verändert.
( https://www.herber.de/forum/archiv/1056to1060/t1056891.htm#1056913 )
verkürzt (also z.b.
Call StartShell_Wait("ftp -s:") bzw. Call StartShell_Wait("calc.exe")
funktioniert er auch.
Grüsse,
Tobias
Anzeige
AW: Zauberstab oder Glaskugel oder...
07.03.2009 15:54:30
Oberschlumpf
Hi Tobias
Tschulligung, dass ich mich einmische.
Aber ich glaub, es wird dir nicht viel helfen, wenn du uns einen Code zeigst, der funktioniert.
Denn es ist ja NICHT dein Code, der NICHT funktioniert.
Deswegen zeig uns doch bitte DEINE Datei mit genau DEINEM Code
(inklusive der Problemcodezeile, die nich will wie sie soll)
Ciao
Thorsten
AW: Zauberstab oder Glaskugel oder...
07.03.2009 17:05:51
Tobias
Hallo allerseits,
Danke für den Hinweis, Thorsten.
Ich habe jetzt die Mappe reduziert, damits nicht zu unübersichtlich wird.
Das Makro heißt myftp_download im Modul SYNCHRONISATION
Zusätzlich eine Msgbox eingebaut, die erst auftauchen sollte, wenn man das shellfenster geschlossen hat
(das geht übrigens über die eingabe bye im Shell-Fenster)

(...)
'Try 3: StartShell
Call StartShell_Wait("ftp -s:" & shortpath & "\sync.txt " & Worksheets("Einstellungen").[ _
A3], showshell)  Fehler " Falsche Anzahl an Argumenten..." Taucht hier auf
MsgBox "Diese MsgBox sollte erst auftauchen, wenn das Shell-Fenster geschlossen wurde"


Beste Grüsse,
Tobias

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige