ich habe mal eine Frage. Gibt es eine Möglichkeit die Aktuelle Fensterposition eines Programms (z.B. Word) auszulesen und diese dann in A1 und B1 einzutragen?
Vielen Dank für eure Hilfe
Gruß
marspoki
Private Function GetWindowInfo(ByVal hwnd&, STitel$, Optional booVisible As Boolean = True) As _
Long
Dim Result&, Style&, Title$
'Darstellung des Fensters
Style = GetWindowLong(hwnd, GWL_STYLE)
Style = Style And (WS_VISIBLE Or WS_BORDER)
'Fensetrtitel ermitteln
Result = GetWindowTextLength(hwnd) + 1
Title = Space$(Result)
Result = GetWindowText(hwnd, Title, Result)
Title = Left$(Title, Len(Title) - 1)
'prüfen ob Fenster Sichtbar
If (Style = (WS_VISIBLE Or WS_BORDER)) Or booVisible = False Then
If Title Like "*" & STitel & "*" Then
GetWindowInfo = hwnd
Exit Function
End If
End If
GetWindowInfo = 0
End Function
Um die aktuelle Fensterposition eines Programms wie Microsoft Word in Excel auszulesen und in die Zellen A1 und B1 einzutragen, kannst Du folgenden VBA-Code verwenden:
Öffne Excel und gehe zum VBA-Editor: Drücke ALT + F11
.
Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf ein Projekt im Projekt-Explorer, wähle Einfügen
und dann Modul
.
Kopiere den folgenden Code in das Modul:
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Sub Fensterposition_auslesen()
Dim Rec As RECT
Dim hwnd As Long
hwnd = GetForegroundWindow()
GetWindowRect hwnd, Rec
' Werte in die Zellen A1 und B1 eintragen
Range("A1").Value = Rec.Left
Range("B1").Value = Rec.Top
End Sub
Führe das Makro aus: Drücke F5
oder gehe zu Run > Run Sub/UserForm
, um den Code auszuführen.
Nun werden die Positionen des aktiven Fensters in die Zellen A1 und B1 eingetragen.
Fehler: "Berechtigungsprobleme": Stelle sicher, dass Du die Makros in Excel aktiviert hast. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen
und aktiviere die Option für Makros.
Fehler: "Fenster nicht gefunden": Achte darauf, dass das gewünschte Fenster (z.B. Microsoft Word) aktiv ist, wenn Du das Makro ausführst.
Eine weitere Möglichkeit, die Fensterposition zu ermitteln, ist die Verwendung des Application
Objekts, um die Eigenschaften Left
und Top
auszulesen. Dieser Ansatz ist jedoch weniger direkt und funktioniert nur für Excel-Fenster.
Hier ist ein Beispiel, wie Du den oben genannten Code anpassen kannst, um die Fensterposition von anderen Programmen zu ermitteln:
Sub FensterHolen()
Dim hwnd As Long
Dim STitel As String
STitel = "Microsoft Word"
' Hier kannst Du den Titel des Fensters anpassen, je nach Bedarf
hwnd = GetForegroundWindow()
Dim Rec As RECT
GetWindowRect hwnd, Rec
' Werte in die Zellen A1 und B1 eintragen
Range("A1").Value = Rec.Left
Range("B1").Value = Rec.Top
End Sub
GetWindowInfo
erweitern, um nach spezifischen Fenstern zu suchen, indem Du Teile des Fenstertitels anpasst.1. Frage
Wie kann ich den Code anpassen, um die Fensterposition von anderen Anwendungen zu ermitteln?
Antwort: Du musst den Titel des Fensters in der Variable STitel
ändern. Ersetze "Microsoft Word" durch den Titel des gewünschten Fensters.
2. Frage
Funktioniert dieser Code in Excel für Mac?
Antwort: Leider funktioniert dieser Code nicht auf Mac, da die API-Funktionen, die verwendet werden, spezifisch für Windows sind.
3. Frage
Wie kann ich die Fensterposition automatisch alle paar Sekunden aktualisieren?
Antwort: Du kannst eine Schleife mit einer Sleep
-Funktion verwenden, um den Code regelmäßig auszuführen. Achte darauf, dass dies die Performance beeinträchtigen kann.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen