Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fremdes Programmfenster maximieren

Forumthread: Fremdes Programmfenster maximieren

Fremdes Programmfenster maximieren
Martin
Hallo liebe Excel-Freunde,
wie kann man per VBA das Programmfenster einer anderen unter Windows aktiven Anwendung maximieren?
Grund meiner Frage: Mit AppActivate setze ich den Focus auf ein anderes Programm und steuere dieses mit Application.Sendkeys an. Meistens klappt das auch sehr gut. Aber wenn das Programmfenster der betreffenden Anwendung nicht maximiert ist, dann werden die mit Application.Sendkeys gesendeten Tasten leider auf Excel selbst angewandt. (Ich habe es mit dem Senden der Tastenkombination "Alt+Space+x" bereits probiert, aber auch das klappt nicht so recht.)
Zusatzfrage: Ist es auch möglich per VBA abzufragen ob das betreffende Anwengungsfenster maximiert ist?
Ich wäre Euch für Vorschläge sehr dankbar.
Viele Grüße
Martin
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Fremdes Programmfenster maximieren
18.04.2011 20:39:02
Martin
Hallo Thorsten,
vielen lieben Dank für deinen Vorschlag. Leider funktioniert es nicht wie gehofft, was aber sicherlich nicht an dem Code liegt. Es wird tatsächlich ein Fenster maximiert, welches aber (warum auch immer) leer oder besser gesagt transparent ist (denn der Desktop ist darin zu sehen). Das ganze ist so merkwürdig und nicht manuell zu erzeugen, dass ich es einfach nicht nachvollziehen kann. Schließe ich dieses leere Fenster, dann schließe ich die gesamte betreffende Anwendung. Also scheint das Makro prinzipiell zu funktionieren, nur das Programm verhält sich merkwürdig. Ich glaube, dass ich es jetzt aufgeben muss :(
Wenn es hilft, dann lade ich von dem "Phänomen" mal einen Screenshot hoch.
Viele Grüße
Martin
Anzeige
AW: Fremdes Programmfenster maximieren
18.04.2011 23:34:36
Oberschlumpf
Hi Martin,
diesen Code vollständig in ein allgemeines Modul:

Option Explicit
' benötigte API-Deklaration
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
' benötigte API-Deklaration
Private Declare Function ShowWindow Lib "user32" ( _
ByVal hWnd As Long, _
ByVal nCmdShow As Long) As Long
Sub sbTest()
Dim lhWnd As Long
Dim sTitle As String, t
'als Bsp öffnete ich ein Texteditorfenster mit dem EXAKTEN Namen aus der Titelzeile: "Neu  _
Textdokument.txt - Editor"
sTitle = "Neu Textdokument.txt - Editor"
'hier wird das Handle des Texteditor-Fensters ermittelt
lhWnd = FindWindow(vbNullString, sTitle)
'und hier wird das Texteditorfenster mit Normalgröße (nicht minimiert oder maximiert) in den  _
Vordergrund geholt
ShowWindow lhWnd, vbNormalFocus
End Sub

Starte in Excel (nich im VBE) die Sub sbTest.
Bei mir funktioniert es.
Ciao
Thorsten
Anzeige
AW: Fremdes Programmfenster maximieren
19.04.2011 13:40:01
Martin
Hallo Thorsten,
super, jetzt klappt es tatsächlich! Nun habe ich auch eine Erklärung für den Fehler mit dem von mir beschrieben Phänomen: In meiner Software steht in der Titelleiste "TT" und diese arbeitet mit zwei Fenstern. Das Hauptfenster kann "eigentlich" nicht maximiert werden (das Maximieren-Symbol ist abgeblendet), aber das Makro hat es scheinbar trotzdem hinbekommen. Das in der Software geöffnete Projekt ist in einem eigenen Fenster ("TT - Projektname"), was natürlich ärgerlich ist.
Eine letzte Frage: Da sich der Projektname natürlich immer mal ändert, ist mir der Fenstername nicht unbedingt bekannt. Kann ich auch sagen, dass das Fenster mit dem ersten vier Buchsteben ("TT -") maximiert werden soll?
Viele Grüße
Martin
Anzeige
AW: Fremdes Programmfenster maximieren
19.04.2011 17:10:39
Oberschlumpf
Hi Martin
Im Originalcode den ich dir zuerst schickte, steht ja sinngemäß, dass der KORREKTE, und ich denke, somit auch der vollständige Fenstername übergeben werden muss.
Ich hab jetzt keine Idee, ob es auch anders möglich ist.
Weiter viel Erfolg.
Ciao
Thorsten
;
Anzeige
Anzeige

Infobox / Tutorial

Programmfenster in Excel mit VBA maximieren


Schritt-für-Schritt-Anleitung

Um ein fremdes Programmfenster in Excel mit VBA zu maximieren, kannst du den folgenden Code verwenden. Dieser nutzt API-Funktionen von Windows:

  1. Öffne Excel und gehe zum Visual Basic for Applications (VBA) Editor (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Option Explicit
' benötigte API-Deklaration
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
' benötigte API-Deklaration
Private Declare Function ShowWindow Lib "user32" ( _
ByVal hWnd As Long, _
ByVal nCmdShow As Long) As Long

Sub FensterMaximieren()
    Dim lhWnd As Long
    Dim sTitle As String

    ' Fenstername anpassen
    sTitle = "Neu Textdokument.txt - Editor"  ' Ersetze durch den exakten Titel des Fensters
    ' Handle des Fensters ermitteln
    lhWnd = FindWindow(vbNullString, sTitle)

    ' Fenster maximieren
    If lhWnd <> 0 Then
        ShowWindow lhWnd, 3  ' 3 steht für maximieren
    Else
        MsgBox "Fenster nicht gefunden."
    End If
End Sub
  1. Ändere den sTitle-Wert, um den Titel des Fensters, das du maximieren möchtest, anzupassen.
  2. Starte die Sub FensterMaximieren, um das Fenster zu maximieren.

Häufige Fehler und Lösungen

  • Fenster nicht gefunden: Wenn du die Fehlermeldung "Fenster nicht gefunden" erhältst, stelle sicher, dass der Fenstertitel korrekt ist und das Fenster tatsächlich geöffnet ist.
  • Fenster bleibt transparent: Manchmal kann es vorkommen, dass das Fenster zwar maximiert wird, aber transparent bleibt. In diesem Fall könnte es an der Software liegen, die du verwendest. Es hilft, die Anwendung manuell zu überprüfen.

Alternative Methoden

Falls die oben genannte Methode nicht funktioniert, kannst du auch die Windows Tastenkombinationen verwenden, um Fenster zu maximieren.

  • Windows-Taste + Pfeil nach oben: Diese Tastenkombination maximiert das aktuelle Fenster.
  • Alt + Leertaste, dann X: Dies ist eine klassische Methode, um ein Fenster zu maximieren, funktioniert jedoch nicht immer über VBA.

Praktische Beispiele

Ein praktisches Beispiel für die Verwendung des Codes könnte so aussehen:

  • Du arbeitest an einem Excel-Projekt, das Daten aus einem Texteditor verarbeitet. Mit dem obigen VBA-Code kannst du sicherstellen, dass der Texteditor maximiert ist, bevor du Daten eingibst oder bearbeitest.

Tipps für Profis

  • Wenn du regelmäßig mit verschiedenen Fenstern arbeitest, kannst du eine Sammlung von Fensternamen in einem Array speichern und dann in einer Schleife durchgehen, um sie nach Bedarf zu maximieren.
  • Überlege, ob du zusätzliche Fehlerbehandlungen in deinen Code einfügst, um unerwartete Situationen besser zu handhaben.

FAQ: Häufige Fragen

1. Kann ich auch Fenster mit einem bestimmten Namensteil maximieren?
Ja, du kannst den Code anpassen, um nach einem Teil des Fenstertitels zu suchen, indem du die FindWindow-Funktion entsprechend modifizierst.

2. Funktioniert das auch mit Windows 10?
Ja, die oben genannten Methoden und der VBA-Code funktionieren auch unter Windows 10, solange die API-Funktionen verfügbar sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige