aus meinem Kassensystem wird eine xls-Report erstellt, den ich weiterverarbeiten muss. Das Problem an der Sache ist, das dieser Report immer in einer neuen xls-Applications-Instanz geöffnet wird.
Ich habe mir mit zusammengesuchten API Funktionen nun schon das passende Fenster gesucht (siehe Code), wie kann ich nun die richtige Application als Objekt ansprechen um die Daten aus meiner ersten Applications-Instanz heraus zu steuern.
Genauer ich will nur das Blatt EXPORT in meine Anwendung kopieren ?
Irgendjemand eine Idee, danke vorab ?
Option Explicit
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 Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" ( _
ByVal hwnd As Long, _
ByVal lpString As String, _
ByVal cch As Long) As Long
Private Const GW_CHILD = 5
Private Const GW_HWNDNEXT = 2
Public Function GetActiveWindowTitle(nHWnd As Long) As String
Dim sTitle As String
Dim nResult As Long
sTitle = Space$(255)
nResult = GetWindowText(nHWnd, sTitle, Len(sTitle))
GetActiveWindowTitle = Left$(sTitle, nResult)
End Function
Function ExcelApp(Name As String) As Object
Dim Länge&, hwnd&
Dim Klassenname As String
Dim strName 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
strName = GetActiveWindowTitle(hwnd)
If Right(strName, Len(strName) - 18) = Name Then
Set ExcelApp = GetObject(strName) 'das funktioniert nicht
Exit Do
End If
End If
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Loop While hwnd <> 0
End Function
MfG Peter