folgender Code schliesst Excel wenn schon eine Excel-Instanz besteht.
Man sieht dann den Desktop von Windows.
Wie kann ich es erreichen dass zur ersten Instanz "gesprungen" wird?
Die untenstehende Funktion ExcelInstanzen liefert mir die Anzahl der Instanzen und mit folgendem Code wird dann der Start abgebrochen
in "DieseArbeitsmappe" von personl.xls:
Private Sub Workbook_Open()
If ExcelInstanzen() > 1 Then
MsgBox "Excel läuft schon, diese Excel-Instanz wird geschlossen"
Application.Quit
End If
End Sub
Gruß
Reinhard
In "Modul1" von personl.xls:
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
Private Declare Function GetClassName& Lib "user32" Alias _
"GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName _
As String, ByVal nMaxCount As Long)
Private Const GW_CHILD = 5
Private Const GW_HWNDNEXT = 2
Function ExcelInstanzen() As Long
Dim Länge&, Instanzen&, hwnd&
Dim Klassenname As String
hwnd = GetWindow(GetDesktopWindow, GW_CHILD)
Do
Klassenname = String(51, 0)
Länge = GetClassName&(hwnd, Klassenname, 50)
If Left(Klassenname, Länge) = "XLMAIN" Then Instanzen = Instanzen + 1
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Loop While hwnd <> 0
ExcelInstanzen = Instanzen
End Function