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

Forumthread: vba Datei öffnen Fenster - Größe per Code ändern?

vba Datei öffnen Fenster - Größe per Code ändern?
14.11.2016 12:37:51
Michael
Hallo Zusammen,
ich habe ein Script
Dateiname2 = Application.GetOpenFilename("Export (*.txt), *.txt,Export (*.xls*), *.xls*", , "Öffnen des Exports ?.xlsx")
Das Fenster ist allerdings immer sehr klein und ich würde gerne per Script die Größe anpassen. Ist das möglich?
Danke
VG
Mchael H
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: vba Datei öffnen Fenster - Größe per Code ändern?
15.11.2016 09:10:44
Uwe
Hallo Michael,
mache einen Doppelklick in die Kopfzeile oder ziehe mit der Maus an den Rändern des Fensters.
Excel merkt sich die letzte Einstellung.
Gruß Uwe
AW: vba Datei öffnen Fenster - Größe per Code ändern?
15.11.2016 10:39:08
Michael
Hallo Uwe,
danke für den Tip. Aber genau das möchte ich ja nicht. Daher meine explizite Frage nach VBA.
Hat da noch jemand eine Idee?
Vielen Dank.
Michael H
Anzeige
Mit etwas API...
15.11.2016 11:31:46
Case
Hallo Michael, :-)
... wenn du die Datei, die du mit dem Dateidialog öffnest in der Größe verändern willst: ;-)
Option Explicit
' Quelle - http://support.microsoft.com/ _
kb/147659/en-us/
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId _
Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Declare Function GetParent Lib "user32" (ByVal hwnd As Long) 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 Declare Function MoveWindow Lib "user32.dll" _
(ByVal hwnd As Long, ByVal X As Long, ByVal Y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
ByVal wCmd As Long) As Long
Const GW_HWNDNEXT = 2
Public Sub Main()
Dim varFile As Variant
Dim hWindow As Long
varFile = Application.GetOpenFilename("Export (*.txt), *.txt,Export (*.xls*), *.xls*", _
, "Öffnen des Exports ?.xlsx")
If Not varFile = False Then
Workbooks.Open varFile
hWindow = SearchHndByWndName_Parent(Mid(varFile, InStrRev(varFile, "\", -1) + 1))
MoveWindow hWindow, 10, 20, 600, 800, &HF
End If
End Sub
Private Function SearchHndByWndName_Parent(ByVal strSearch As String) As Long
Dim strTMP As String * 100
Dim nhWnd As Long
nhWnd = FindWindow(vbNullString, vbNullString)
Do While Not nhWnd = 0
If GetParent(nhWnd) = 0 Then
GetWindowText nhWnd, strTMP, 100
If InStr(strTMP, strSearch) > 0 Then
SearchHndByWndName_Parent = nhWnd
Exit Do
End If
End If
nhWnd = GetWindow(nhWnd, GW_HWNDNEXT)
Loop
End Function
Servus
Case

Anzeige
Uuupppsss....
16.11.2016 06:51:54
Case
Hallo, :-)
... ich sehe gerade, dass Du ja das Fenster des Dialoges ansprechen willst. ;-)
Da wirst Du schlechte Karten haben. Da ich auch häufiger mit Dateiauswahl arbeite und die Fülle an Möglichkeiten im Dialogfenster den Usern nicht zeigen wollte, habe ich mir das mal mit einer UserForm und einem ListView nachgebaut. Das wäre eine Möglichkeit.
Servus
Case

Anzeige
AW: Uuupppsss....
16.11.2016 09:00:21
Michael
Hallo Case,
schade. Vielen Dank für Deine Mühe.
VG
Michael H
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Fenstergröße beim Öffnen einer Datei ändern


Schritt-für-Schritt-Anleitung

Um die Fenstergröße beim Öffnen einer Datei in Excel mit VBA zu ändern, kannst du den folgenden Code verwenden:

Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Declare Function GetParent Lib "user32" (ByVal hwnd As Long) 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 Declare Function MoveWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Const GW_HWNDNEXT = 2

Public Sub Main()
    Dim varFile As Variant
    Dim hWindow As Long
    varFile = Application.GetOpenFilename("Export (*.txt), *.txt,Export (*.xls*), *.xls*", , "Öffnen des Exports ?.xlsx")
    If Not varFile = False Then
        Workbooks.Open varFile
        hWindow = SearchHndByWndName_Parent(Mid(varFile, InStrRev(varFile, "\", -1) + 1))
        MoveWindow hWindow, 10, 20, 600, 800, &HF
    End If
End Sub

Private Function SearchHndByWndName_Parent(ByVal strSearch As String) As Long
    Dim strTMP As String * 100
    Dim nhWnd As Long
    nhWnd = FindWindow(vbNullString, vbNullString)
    Do While Not nhWnd = 0
        If GetParent(nhWnd) = 0 Then
            GetWindowText nhWnd, strTMP, 100
            If InStr(strTMP, strSearch) > 0 Then
                SearchHndByWndName_Parent = nhWnd
                Exit Do
            End If
        End If
        nhWnd = GetWindow(nhWnd, GW_HWNDNEXT)
    Loop
End Function

Dieser Code öffnet ein Dateiauswahlfenster und ändert die Fenstergröße auf 600x800 Pixel. Du kannst die Werte für nWidth und nHeight anpassen, um die Fenstergröße nach deinen Wünschen zu ändern.


Häufige Fehler und Lösungen

  1. Excel öffnet nur kleines Fenster

    • Wenn das Fenster beim Öffnen der Datei klein bleibt, stelle sicher, dass du den Code korrekt eingefügt hast und dass die MoveWindow-Funktion richtig aufgerufen wird.
  2. VBA läuft nicht

    • Überprüfe, ob Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > ActiveX- und Makroeinstellungen, und aktiviere die Option.

Alternative Methoden

Wenn du das Dialogfenster nicht per VBA anpassen kannst, gibt es Alternativen:

  • UserForms erstellen: Du kannst eine benutzerdefinierte UserForm in VBA erstellen, die es dir ermöglicht, Dateien auszuwählen und dabei die Fenstergröße selbst festzulegen. Dies ist eine flexible Lösung, die dir mehr Kontrolle bietet.

  • Verwendung von Drittanbieter-Tools: Einige Tools von Drittanbietern bieten erweiterte Dateiauswahlfunktionen und können möglicherweise die Fenstergröße besser handhaben.


Praktische Beispiele

Angenommen, du möchtest das Dialogfenster für Textdateien öffnen und dabei die Fenstergröße anpassen. Hier ist ein Beispiel, das du anpassen kannst:

varFile = Application.GetOpenFilename("Textdateien (*.txt), *.txt", , "Wähle eine Textdatei")

Falls du mehrere Dateiformate unterstützen möchtest, füge sie einfach in den Filter-String ein.


Tipps für Profis

  • Fehlerbehandlung einbauen: Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass dein Code robust ist und unerwartete Fehler abfängt.

  • Testen in verschiedenen Excel-Versionen: Teste den Code in verschiedenen Versionen von Excel, um sicherzustellen, dass die Funktionalität überall gleich bleibt.

  • Dokumentation: Kommentiere deinen Code gut, damit du und andere Benutzer ihn später leicht verstehen und anpassen können.


FAQ: Häufige Fragen

1. Kann ich die Fenstergröße direkt im Excel-Dialogfenster ändern?
Leider gibt es keine direkte Möglichkeit, die Größe des Excel-Dialogfensters beim Öffnen einer Datei zu ändern. Der oben genannte VBA-Code ist eine workaround-Lösung.

2. Funktioniert dieser Code in allen Excel-Versionen?
Der bereitgestellte Code sollte in den meisten modernen Excel-Versionen funktionieren, solange Makros aktiviert sind. Es wird jedoch empfohlen, dies in deiner spezifischen Version zu testen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige