Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Frame
BildScreenshot zu Frame Frame-Seite mit Beispielarbeitsmappe aufrufen

Offene Anwendungen erkennen

Betrifft: Offene Anwendungen erkennen von: Albert
Geschrieben am: 29.10.2012 20:03:04

Hallo Excel Experten,

ich habe diese Frage schon einmal ins Forum gestellt und auch einen Link für einen sehr umfangreichen Lösungsansatz bekommen = eine Art TaskManager in Excel. Kann ich jedoch nicht für meine Zwecke einsetzen.
Ich bin auf der Suche nach einem VBA Code, der erkennt, ob außer Excel auch andere Anwendungen offen sind, zumindest sollten der Explorer und ein offener Browser erkannt werden.
Ich habe eine Code, der eine zweite offene Exceldatei erkennt, ich schaffe es aber nicht, diesen so zu erweitern dass er auch andere offene Anwendungen erkennt.

Sub OAp()
    Application.ScreenUpdating = False
    Dim Wb As Workbook, Ap As Application
     For Each Wb In Application.Workbooks
     If Wb.Name <> ThisWorkbook.Name Then MsgBox ("Zweite Exceldatei offen")
    Next Wb
End Sub
Ich hoffe, irgend jemand von Euch hat eine sehr simple Lösung für mein Problem.
Danke, Albert

  

Betrifft: AW: Offene Anwendungen erkennen von: Nepumuk
Geschrieben am: 30.10.2012 09:34:28

Hallo,

so eventuell?

Option Explicit

Private Declare Function EnumWindows Lib "user32.dll" ( _
    ByVal lpEnumFunc As Long, _
    ByVal lParam As Long) As Boolean
Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" ( _
    ByVal hwnd As Long, _
    ByVal lpClassName As String, _
    ByVal nMaxCount As Long) As Long

Private Const GC_CLASSNAME_EXPLORER = "CabinetWClass"
Private Const GC_CLASSNAME_INTERNETEXPLORER = "IEFrame"

Public Sub Start()
    Call EnumWindows(AddressOf WindowCallBack, ByVal 0&)
End Sub

Private Function WindowCallBack(ByVal lngHwnd As Long, ByVal lngParam As Long) As Boolean
    Dim strClassName As String * 256
    Dim lngReturn As Long
    lngReturn = GetClassName(lngHwnd, strClassName, 256)
    Select Case Left$(strClassName, lngReturn)
        Case GC_CLASSNAME_EXPLORER
            MsgBox "Ein Ordner ist geöffnet"
        Case GC_CLASSNAME_INTERNETEXPLORER
            MsgBox "Der Internetexplorer ist geöffnet"
    End Select
    WindowCallBack = True
End Function

Gruß
Nepumuk


  

Betrifft: AW: Offene Anwendungen erkennen von: Albert
Geschrieben am: 31.10.2012 21:59:40

Hallo Nepumuk,

das war genau das was ich gesucht habe. Funktioniert wunderbar, ich möchte das Ganze nur insoweit erweitern, dass auch Firefox erkannt wird. Wie muss ich Deinen Code erweitern, dass auch ein offener Firefox erkannt wird? Meine Veruche brachten kein Ergebnis, ich glaube es hängt mit der Variablendeklaration zusammen.

Private Const GC_CLASSNAME_FIREFOX = "???????"

Vielleicht kannst Du mir da auch noch einen Tipp geben.

Auf jeden Fall, recht herzlichen Dank für Deine Unterstützung

Albert


  

Betrifft: AW: Offene Anwendungen erkennen von: Nepumuk
Geschrieben am: 31.10.2012 23:13:34

Hallo,

so:

Private Const GC_CLASSNAME_FIREFOX = "MozillaUIWindowClass"

Gruß
Nepumuk


  

Betrifft: AW: Offene Anwendungen - Danke!!! von: Albert
Geschrieben am: 01.11.2012 10:19:19

Hallo Nepumuk,

nochmals vielen herzlichen Dank für Deine Informationen. Damit war es mir möglich, ein Problem zu lösen dass schon monatelang akut war.

LG

Albert


 

Beiträge aus den Excel-Beispielen zum Thema "Offene Anwendungen erkennen"