Irgendwie geht es schon wieder nicht, und zwar rufe ich auf :
zeigen = Shell(Pfad & "test.bat ", 3)
Warum geht so ein Aufruf nicht ?
Ich bitte um Hilfe.
Grüsse - Peter.
Pfad = ThisWorkbook.Path
oder dergleichen ermittelst, dann fehlt der letzte "\". Dann sollte es natürlich heissen:zeigen = Shell(Pfad & "\test.bat ", 3)
Gruß IngolfHallo Uwe
Betreffend "Prozess beenden":
Ein Prozess lässt sich hervorragend mit dem offiziellen Windows-
Utility "Kill.exe" abschiessen. Die Datei "Kill.exe" befindet sich im
Windows-Verzeichnis. Falls sie nicht dort ist, kannst du sie von
der Windows-CD kopieren.
In VBA funktioniert der Aufruf problemlos mit
Shell "Kill.exe MeinProzess.exe"
wobei für 'MeinProzess.exe' der gewünschte Prozessname ein-
getragen wird. Es wird der Prozessname verwendet, wie er u.a.
im Windows Task-Manager angezeigt ist. Man kann anstelle des
Namens auch die Prozess-Id angeben (z.B. "Kill.exe 98"). Wenn
der Prozess sich weigert zu beenden, kann man den Parameter
'-f' mitgeben (steht für engl. "force"):
Shell "Kill.exe -f MeinProzess.exe"
Der Prozess wird dadurch 100 %-ig sofort gekillt, egal ob er
gerade läuft, hängt oder abgestürzt ist.
Weitere Infos findest du hier:
<a href="http://195.186.84.74/soscq/fragen.htm">http://195.186.84.74/soscq/fragen.htm</a>
(Frage Nr. 64 anklicken)
Betreffend "Programm starten":
Ich vermute, dass du dein DOS-Programm mit "Shell" startest.
Shell führt ein Programm immer asynchron aus, d.h. der auf
die Shell-Codezeile folgende VBA-Code wird ohne zu warten
weiter ausgeführt. Dieses "Problem" lässt sich einfach vermeiden,
indem man anstelle von Shell diese Anweisung verwendet:
CreateObject("WScript.Shell").Run "MeinProgramm.exe", 1
Das VBA-Programm läuft erst weiter, wenn "MeinProgramm.exe"
vollständig gestartet ist.
Soll das VBA-Programm warten, bis "MeinProgramm.exe" be-
endet ist, ist diese Codezeile zu verwenden:
CreateObject("WScript.Shell").Run "MeinProgramm.exe", 1, True
Wegen dem letzten mit "True" angegebenen Parameter läuft das
VBA-Programm erst weiter, wenn "MeinProgramm.exe" beendet
ist.
Gruss
Philipp von Wartburg
Gruß Ingolf
Sub SortStart()
ChDrive "F"
ChDir "F:\99_Test"
a = Shell("SortBat.bat", 1)
End Sub