Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hilfe bei der Fehlersuche (API)

Forumthread: 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

Anzeige

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
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige