Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
864to868
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
864to868
864to868
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hilfe bei der Fehlersuche (API)

Hilfe bei der Fehlersuche (API)
20.04.2007 19:08:05
Timo
Hallo!
Ich habe noch eine harte Nuss vorm Wochenende :-)
Mein Ziel:
Ich starte per VBA eine Bat-Datei, die mehrere Dateien von Netzlaufwerken kopiert. Nun soll der Code bis zur Beendigung der Bat-Datei warten., da diese Dateien anschlließend eingelesen werden.
Mein Problem:
Um das zu realisieren habe ich den folgenden Code in dem Buch "Excel Kompendium" von MuT gefunden. Es soll mittels API-Funktion geprüft werden, ob die externe Anwendung noch läuft, doch in der Do While Schleife scheint ein Fehler zu sein: Die MsgBox erscheint direkt nach Aufruf von Notepad ( bei mir die Bat), nicht beim Beenden. Kann mir jemand weiterhelfen, wo der Fehler steckt?
Declare

Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare 

Function GetExitCodeProcess Lib "kernel32" _
(ByVal L_Prozess As Long, l_Ende As Long) As Long
Public Const PROCESS_QUERY_INFORMATION = &H400
Public Const STILL_ACTIVE = &H103


Sub StartenExternerAnwendung()
Dim Beginn As Double
Dim l As Long , L_Prozess As Long, l_Ende As Long
Beginn = Now
With Sheets("Tabelle2")
.Range("A65536").End(xlUp).Offset(1, 0).Value = Now
End With
l = Shell("notepad.exe", 1)
L_Prozess = OpenProcess(PROCESS_QUERY_INFORMATION, False, l)
Do While l_Ende = STILL_ACTIVE
GetExitCodeProcess L_Prozess, l_Ende
DoEvents
Loop
MsgBox "Die Anwendung wurde um " & Time & " beendet!"
tmp = Now - Beginn
With Sheets("Tabelle2")
.Range("B65536").End(xlUp).Offset(1, 0).Value = Format(tmp, "s")
End With
End Sub


Danke und schönes Wochenende
Timo

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe bei der Fehlersuche (API)
20.04.2007 19:37:22
micha
Hallo Timo,
so funktioniert es bei mir....
Declare

Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare 

Function GetExitCodeProcess Lib "kernel32" _
(ByVal L_Prozess As Long, l_Ende As Long) As Long


Sub StartenExternerAnwendung()
Const PROCESS_QUERY_INFORMATION = &H400
Const STILL_ACTIVE = &H103
Dim Beginn As Double
Dim l As Long, L_Prozess As Long, l_Ende As Long
Beginn = Now
l_Ende = STILL_ACTIVE
l = Shell("notepad.exe", 1)
L_Prozess = OpenProcess(PROCESS_QUERY_INFORMATION, False, l)
Do While l_Ende = STILL_ACTIVE
GetExitCodeProcess L_Prozess, l_Ende
DoEvents
Loop
MsgBox "Die Anwendung wurde um " & Time & " beendet!"
End Sub


micha

Anzeige
AW: Hilfe bei der Fehlersuche (API)
20.04.2007 21:24:01
Timo
Danke, das hilft mir weiter...
mfg
Timo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige