Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
536to540
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
536to540
536to540
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

GetObject() bei bekanntem Handle

GetObject() bei bekanntem Handle
29.12.2004 00:32:32
Matthias
Hallo zusammen,
ich habe ein Fenster-Handle einer Excel-Instanz ermittelt (welche nicht die gerade aktive Instanz ist) und möchte in dieser Instanz eine Mappe öffnen.
wenn ich eine neue Instanz öffne, geht das ja so:
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open Filename:=n

Nur, wie kann ich analog dazu der Objektvariablen xlApp die Excel-Instanz mit dem mir bekannten Fenster-Handle zuweisen?
Über Ratschläge freue ich mich sehr!
Gruß Matthias

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: GetObject() bei bekanntem Handle
Boris
Hi Mtthias,
ich habe ein Fenster-Handle einer Excel-Instanz ermittelt
Wie denn: Mit der API FindWindow ? (oder wie?)
Grüße Boris
AW: GetObject() bei bekanntem Handle
29.12.2004 09:06:57
Matthias
Hallo Boris,
ja, genau. Mit FindWindow() und GetNextWindow().
konkreter:
Sub GetXLInstances()
Dim hWnd As Long, lRet As Long
Dim i As Integer, j As Integer
Dim sClassBuffer As String
On Error GoTo errhandler
i = 0
ReDim hWndArray(i)
hWndArray(0) = i
hWnd = FindWindow("XLMAIN", vbNullString)
If hWnd <> 0 Then
If hWnd <> Application.hWnd Then
i = i + 1
ReDim Preserve hWndArray(i)
hWndArray(i) = hWnd
hWndArray(0) = i
End If
Do
hWnd = GetNextWindow(hWnd, GW_HWNDNEXT)
If hWnd = 0 Then Error 7
sClassBuffer = String(255, 0)
lRet = GetClassName(hWnd, sClassBuffer, Len(sClassBuffer))
sClassBuffer = Left(sClassBuffer, InStr(1, sClassBuffer, Chr(0), _
vbTextCompare) - 1)
If UCase(sClassBuffer) = "XLMAIN" And hWnd <> Application.hWnd Then
i = i + 1
ReDim Preserve hWndArray(i)
hWndArray(i) = hWnd
hWndArray(0) = i
End If
Loop
End If
errhandler:
Debug.Print hWndArray(0); " gefunden!"
For j = 1 To hWndArray(0)
Debug.Print j, hWndArray(j)
Next j
End Sub
(Code ist aus dem Netz, von mir nur etwas abgeändert).
Nun fehlt mir die Möglichkeit, die Instanz anzusprechen (siehe 1. Posting).
Grüße,
Matthias
Anzeige
NOCH OFFEN
Boris
Hi Matthias,
...da müssen die VBA-Cracks ran.
Grüße Boris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige