Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Namen offene Anwendungen auslesen

Forumthread: Namen offene Anwendungen auslesen

Namen offene Anwendungen auslesen
Lutz
Hallo,
ich möchte gern per VBA die Namen der offenen Anwendungen auslesen und einer Variablen übergeben,
die ich dann im Code weiterverarbeiten kann.
z.B. Inbox - Microsoft Outlook, Kalender - Microsoft Outlook...
Danke für Hinweise.
M.f.G.
Lutz
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Namen offene Anwendungen auslesen
27.01.2012 19:27:15
Lutz
Habe noch eine Anmerkung:
Das Auslesen kann ja per API-Code erfolgen, der dann in VBA gestartet wird...
Nur mit API kenne ich mich nur sehr wenig aus...
AW: Namen offene Anwendungen auslesen
29.01.2012 21:29:10
Lutz
Hallo Josef,
danke, habe im Forum VB... einen Beitrag eingestellt.
M.f.G.
Lutz
;
Anzeige
Anzeige

Infobox / Tutorial

Offene Anwendungen in Excel per VBA auslesen


Schritt-für-Schritt-Anleitung

Um die Namen der offenen Anwendungen in Excel per VBA auszulesen, kannst du die Windows-API verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul einfügen: Klicke mit der rechten Maustaste auf "VBAProject (DeineArbeitsmappe)", wähle "Einfügen" und dann "Modul".

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
    Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
    
    Dim appName As String
    
    Sub GetOpenApplications()
       appName = ""
       EnumWindows AddressOf EnumProc, 0
       MsgBox appName
    End Sub
    
    Function EnumProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
       Dim title As String * 255
       GetWindowText hwnd, title, 255
       If title <> vbNullString Then
           appName = appName & title & vbCrLf
       End If
       EnumProc = 1
    End Function
  4. Makro ausführen: Drücke F5, um das Makro GetOpenApplications auszuführen. Es wird ein Fenster angezeigt, das die Namen der offenen Anwendungen auflistet.


Häufige Fehler und Lösungen

  • Fehler: "Benutzerdefinierte Funktion nicht definiert"

    • Lösung: Stelle sicher, dass die API-Deklarationen korrekt sind und dass der Code im richtigen Modul eingefügt wurde.
  • Fehler: Keine Anwendung wird angezeigt

    • Lösung: Überprüfe, ob andere Anwendungen tatsächlich geöffnet sind. Der Code listet nur die Fenster mit sichtbarem Titel auf.

Alternative Methoden

Wenn du keine API verwenden möchtest, kannst du auch alternative Ansätze in Betracht ziehen, wie z.B. die Verwendung von PowerShell oder externen Tools, die die Fensterliste auslesen und die Informationen an Excel zurückgeben.

Ein Beispiel für PowerShell:

Get-Process | Where-Object { $_.MainWindowTitle } | Select-Object MainWindowTitle

Praktische Beispiele

  1. Anwendungen in einer Liste speichern: Anstatt die Namen der Anwendungen nur anzuzeigen, kannst du sie auch in eine Excel-Tabelle schreiben.

    Sub SaveApplicationsToSheet()
       Dim ws As Worksheet
       Set ws = ThisWorkbook.Sheets(1)
       Dim row As Integer
       row = 1
       appName = ""
       EnumWindows AddressOf EnumProc, 0
       Dim appArray() As String
       appArray = Split(appName, vbCrLf)
    
       For Each app In appArray
           If app <> "" Then
               ws.Cells(row, 1).Value = app
               row = row + 1
           End If
       Next app
    End Sub
  2. Anwendungen filtern: Du kannst den Code erweitern, um nur spezifische Anwendungen zu erfassen, z.B. nur Microsoft Outlook.


Tipps für Profis

  • Debugging: Verwende Debug.Print appName, um die Ergebnisse im Direktfenster zu sehen, anstatt sie in einer MsgBox anzuzeigen.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsmechanismen, um unerwartete Fehler während der Ausführung des Codes abzufangen.
  • Performance: Wenn du viele Fenster hast, kann es hilfreich sein, den Code asynchron auszuführen, um die Leistung zu verbessern.

FAQ: Häufige Fragen

1. Kann ich den Code anpassen, um auch minimierte Fenster zu sehen? Ja, du kannst die API-Funktion IsWindowVisible verwenden, um auch minimierte Fenster anzuzeigen.

2. Funktioniert dieser Code in Excel 365? Ja, dieser Code funktioniert in Excel 365 und anderen Versionen, die VBA unterstützen. Stelle sicher, dass die Makros aktiviert sind.

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