mit VBA Windows- Prozesse auflisten

28/01/2013 - 17:24 von Hans Alborg | Report spam
Hallo Leute!

<Excel 2007>

Was geht:

Excel startet ein externes Faxprogramm und schickt dem seine Tabellen.
Ich gebe dort die Gegenstelle an und sende das Fax weg.
Dann schließe ich das Faxprogramm.
Das Faxprogramm legt eine Log- Datei an, die Excel importiert und den
letzten Eintrag auswertet.

Was ich tun möchte:

Die Log-Datei erst importieren lassen, wenn das Faxproggi fertig ist.
So bekomme ich als Dokumentation Adressat, Telefonnummer etc. ins Blatt.
Dazu muß Excel wissen daß das Faxprogramm geöffnet war und fertig ist.

Das würde wunderbar klappen, aber es gibt einen Haken.

Im Netz fand ich folgenden Code:
'
' (REM- Zeilen des Originals weggelassen)
Set WMI_Object = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate}!\\" & "." & "oot\cimv2")

Set Prüfprogramm = WMI_Object.ExecQuery("Select * from Win32__
Process Where Name = 'calc.exe'")

If Prüfprogramm.Count = 0 Then
With Range("A27")
.Interior.ColorIndex = 3
.Value = "Rechner làuft nicht"
End With
Else
With Range("A27")
.Interior.ColorIndex = 50
.Value = "Rechner làuft"
End With
End If
'
Das ist meine Grundlage (statt des Rechners dann "Fax.exe").
Dieser Code liefert nur einen Augenblickswert, ich habe mit einer Schleife
erreicht, daß geprüft wird, ob das Faxprogramm schon gestartet wurde, ob es
gerade làuft oder dann beendet ist. Wenn es garnicht starten kann (z.B.
nicht vh.) sorgt ein Countdown- Zàhler dafür daß das Makro weiterlàuft.

Ist also das Faxprogramm aktiv gewesen und dann beendet, geht das mit dem
Log- Import weiter...

Was klappt ist die obige Routine -aber nur dann, wenn das Faxprogramm von
Hand gestartet wird!
Sowie ich aus Excel heraus faxe, bleibt " Prüfprogramm.Count" auf "0".
Mit dem Taskmanager habe ich in den laufenden Prozessen nachgesehen, und in
beiden Fàllen ist der Prozessname derselbe (auch "calc.exe" taucht dort auf,
wenn ich dieses Proggi starte).

Nun dachte ich: 'Bau mal eine Schleife, die alle Prozesse (in einer
Msg-Box?) anzeigt und guck was da passiert'.
Aber das schaff ich nicht. Hab heute mehr Fehlermeldungen gehabt als KCal.

Weiß einer, wie ich sowas, evtl. in Abwandlung obigen Codes, hinbekomme?

TIA,

Hans
 

Lesen sie die antworten

#1 Jörg Eisenträger
30/01/2013 - 00:11 | Warnen spam
Hallo Hans,

Was ich tun möchte:
Die Log-Datei erst importieren lassen, wenn das Faxproggi fertig ist.



Google mal nach ShellX. Damit kannst Du ein Programm starten und dessen
Ende abwarten. Sollte vielleicht helfen. Dann brauchst Du das ganze
Prozesse-Auflisten-Geraffel nicht.


Gruß
Jörg
"One of the best ways to boost your Excel efficiency is also one of the best ways to shoot yourself in the foot."
(Susan Harkins auf www.techrepublic.com/blog/10things/10-mistakes-to-avoid-when-working-with-multiple-worksheets/1961 )

Ähnliche fragen