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

VBA Prüfen ob ein Programm läuft

Forumthread: VBA Prüfen ob ein Programm läuft

VBA Prüfen ob ein Programm läuft
11.05.2023 20:33:46
Holger

Hallo Gemeinde,

auch wenn es schon einige Einträge zu dem Thema sowie Lösungsansätze von Nepomuk (32-Bit-Version) gibt, komme ich nicht klar.

Aus einem Makro wir eine EXE gestartet, die keinerlei Anzeigen hat, sondern einfach langwierige Berechnungen im Hintergrund durchführt und die Daten nach und nach in ein Verzeichnis schreibt. Es ist nicht klar erkennbar, wann dieses Programm fertig ist.

Das System arbeitet mit 64 Bit und der Startaufruf lautet:

Dim WPrunning As Variant
WPrunning = Shell(Pfad & "programm.exe")

Der Start und auch die Arbeit funktionieren, aber ich kann ncht prüfen, ob und wann das Programm fertig ist.

Hat jemand eine Idee?

Vilen Dank.

Viel Grüße Holger

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Prüfen ob ein Programm läuft
11.05.2023 20:55:00
Holger
Hallo Yal,

danke, den Beitrag kenne ich, läuft aber nicht unter 64Bit. Leider bin ich nicht inder Lage, das auf 64 Bit umzuschreiben.

Ergänzung: das Programm ist kurz nach dem Start im Taskmanager unter "Apps" zu sehen, dann wechselt zu "Hintergrundprozesse", wo es lange läuft.

Viele Grüße
Holger


Anzeige
AW: VBA Prüfen ob ein Programm läuft
12.05.2023 17:22:43
Pappawinni
also ich hab n 64 bit system und das funktioniert jedenfalls bei mir:


Sub Prozesse_auflisten()
'** Alle Prozesse ab Zelle A1 auflisten
'** Vorgaben definieren
Set objWindowsService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
  
'** Abfrage der aktiven Prozesse
Set colProcessList = objWindowsService.ExecQuery("SELECT * FROM Win32_Process")
  
'** Selektierte Prozessliste durchlaufen
For Each objProcess In colProcessList
 a = a + 1 'Zeilenzähler
 Cells(a, 1).Value = objProcess.Name 'Ausgabe
Next objProcess
End Sub



Anzeige
AW: VBA Prüfen ob ein Programm läuft
13.05.2023 09:59:12
Anton
Hallo Holger,
vielleicht hilft dir dieser Betrag weiter.
mfg Anton

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA: Programmstatus prüfen in Excel


Schritt-für-Schritt-Anleitung

Um zu prüfen, ob ein Programm in VBA läuft, kannst Du die Windows Management Instrumentation (WMI) verwenden. Diese Methode ermöglicht es Dir, eine Liste der aktiven Prozesse zu erhalten. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei)" und wähle "Einfügen" > "Modul".

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Sub Prozesse_auflisten()
       ' Alle Prozesse ab Zelle A1 auflisten
       Dim objWindowsService As Object
       Dim colProcessList As Object
       Dim objProcess As Object
       Dim a As Integer
    
       ' Vorgaben definieren
       Set objWindowsService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    
       ' Abfrage der aktiven Prozesse
       Set colProcessList = objWindowsService.ExecQuery("SELECT * FROM Win32_Process")
    
       ' Selektierte Prozessliste durchlaufen
       For Each objProcess In colProcessList
           a = a + 1 ' Zeilenzähler
           Cells(a, 1).Value = objProcess.Name ' Ausgabe
       Next objProcess
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus, um die aktiven Prozesse aufzulisten.


Häufige Fehler und Lösungen

  • Fehler: "Zugriff verweigert"
    Lösung: Stelle sicher, dass Du Excel mit Administratorrechten ausführst.

  • Fehler: Keine Prozesse aufgelistet
    Lösung: Überprüfe, ob das Programm, das Du überwachen möchtest, tatsächlich läuft. Nutze den Task-Manager, um den Status zu überprüfen.

  • Fehler: 64-Bit Kompatibilität
    Wenn Du ein 64-Bit System verwendest, achte darauf, dass alle Bibliotheken und Referenzen, die Du verwendest, ebenfalls 64-Bit kompatibel sind.


Alternative Methoden

Falls Du eine andere Methode bevorzugst, kannst Du auch die Shell-Funktion verwenden, um den Status eines Programms zu prüfen. Hier ist ein Beispiel:

Function IsProgramRunning(programName As String) As Boolean
    Dim objWMIService As Object
    Dim colProcessList As Object
    Dim objProcess As Object

    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & programName & "'")

    IsProgramRunning = (colProcessList.Count > 0)
End Function

Verwende diese Funktion, um zu überprüfen, ob ein bestimmtes Programm läuft, indem Du den Namen des Programms als Parameter übergibst.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du den Status eines Programms in VBA überprüfen kannst:

  1. Überprüfen des Programms "programm.exe":

    If IsProgramRunning("programm.exe") Then
       MsgBox "Das Programm läuft."
    Else
       MsgBox "Das Programm ist nicht aktiv."
    End If
  2. Auflisten aller aktiven Prozesse:

    Nutze die oben erklärte Prozesse_auflisten Subroutine, um alle aktiven Prozesse in Excel aufzulisten.


Tipps für Profis

  • Nutze die Application.Wait-Methode, um eine Verzögerung einzuplanen, während Du auf die Beendigung eines Prozesses wartest.
  • Kombiniere die Prozessüberwachung mit Fehlerbehandlung, um unerwartete Probleme während der Ausführung zu vermeiden.
  • Dokumentiere Deinen Code gut, damit andere (oder Du selbst in der Zukunft) verstehen können, was der Code bewirken soll.

FAQ: Häufige Fragen

1. Wie kann ich ein bestimmtes Programm starten und gleichzeitig dessen Status prüfen?
Du kannst die Shell-Funktion verwenden, um das Programm zu starten, und anschließend die oben beschriebene Methode, um den Status zu überprüfen.

2. Funktioniert dieser Code auch in Excel 2016?
Ja, der Code ist in den meisten modernen Excel-Versionen, einschließlich Excel 2016, funktionsfähig. Achte darauf, dass Du die richtigen Berechtigungen hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige