Walter muss immer eine bestimmte Excel-Arbeitsmappe an derselben Stelle auf dem Bildschirm und mit einer bestimmten Fenstergröße öffnen. Er fragt sich, ob es eine Möglichkeit gibt, Excel beim Schließen der Arbeitsmappe diese Speicherort- und Größeninformationen merken zu lassen, damit sie beim nächsten Öffnen derselben Arbeitsmappe verwendet werden.

Eine relativ einfache Lösung besteht darin, Ihre Arbeitsmappe (oder häufig Arbeitsmappen) so zu positionieren, wie Sie sie auf dem Bildschirm haben möchten, und die Arbeitsmappen dann als Arbeitsbereich zu speichern. Dazu zeigen Sie die Registerkarte Ansicht des Menübands an und klicken auf das Werkzeug Arbeitsbereich speichern. Es ist jedoch zu beachten, dass dieser Ansatz nur in Excel 2007 und Excel 2010 funktioniert. Die Möglichkeit zum Erstellen von Arbeitsbereichen wurde aus Excel 2013 entfernt, obwohl Sie sie weiterhin öffnen können.

Für eine Lösung, die in allen modernen Versionen von Excel funktioniert, müssen Sie ein Makro verwenden. Sie können ein Makro einrichten, das beim Schließen der Arbeitsmappe automatisch ausgeführt wird, und ein anderes Makro, das beim Öffnen ausgeführt wird. Diejenige, die beim Schließen ausgeführt wird, kann Positionsinformationen speichern, und diejenige, die beim Öffnen ausgeführt wird, kann diese Informationen abrufen und sie verwenden, um zu ermitteln, wo die Arbeitsmappe angezeigt werden soll.

Die Frage ist jedoch, wo die Positionierungsinformationen gespeichert werden sollen. Eine Lösung besteht darin, es einfach in eine Textdatei in demselben Ordner zu schreiben, in dem die Arbeitsmappe gespeichert ist. Dies ist der Ansatz des folgenden Makropaares.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim fileName As String     Dim myWindow As Window

Set myWindow = ActiveWindow     fileName = "config.txt"

Open fileName For Output As #1     With myWindow         Write #1, .Top         Write #1, .Left         Write #1, .Height         Write #1, .Width     End With     Close #1 End Sub
Private Sub Workbook_Open()

Dim inputStr As String     Dim fileName As String     Dim myWindow As Window

Set myWindow = ActiveWindow     fileName = "config.txt"

If Dir(fileName) <> "" Then         Open fileName For Input As #1         With myWindow             .WindowState = xlNormal             Line Input #1, inputStr             .Top = inputStr             Line Input #1, inputStr             .Left = inputStr             Line Input #1, inputStr             .Height = inputStr             Line Input #1, inputStr             .Width = inputStr         End With         Close #1     End If End Sub

Das Makro, das beim Schließen der Arbeitsmappe ausgeführt wird, speichert die vier Positionierungspositionen (.Top, .Left, .Height und .Width) in einer Datei mit dem Namen config.txt. Diese Datei wird dann beim nächsten Öffnen der Arbeitsmappe gelesen und die entsprechenden Eigenschaften für das Arbeitsmappenfenster festgelegt.

Wenn die Datei config.txt aus irgendeinem Grund fehlt, wird die Arbeitsmappe an ihrem Standardspeicherort geöffnet.

Dieser Ansatz funktioniert hervorragend, wenn Sie eine einzelne Arbeitsmappe im Ordner haben, die die Positionierungsinformationen verwendet. Wenn Sie mehrere haben, überschreibt jeder die Datei config.txt, und es kommt wahrscheinlich vor, dass Arbeitsmappen nicht dort geöffnet werden, wo Sie sie haben möchten.

Für einige Leute kann ein besserer Ansatz darin bestehen, die Positionierungsorte in der Arbeitsmappe selbst in benannten Referenzen zu speichern. Dies ist der Ansatz der folgenden Makros.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

On Error Resume Next     With ThisWorkbook         With .Names             .Add Name:="WinTop", RefersToR1C1:="=1"

.Add Name:="WinLeft", RefersToR1C1:="=1"

.Add Name:="WinWidth", RefersToR1C1:="=1"

.Add Name:="WinHeight", RefersToR1C1:="=1"

End With         On Error GoTo 0         .Names("WinTop").RefersTo = ActiveWindow.Top         .Names("WinLeft").RefersTo = ActiveWindow.Left         .Names("WinWidth").RefersTo = ActiveWindow.Width         .Names("WinHeight").RefersTo = ActiveWindow.Height     End With End Sub
Private Sub Workbook_Open()

With ThisWorkbook         ActiveWindow.Top = Val(Mid(.Names("WinTop").RefersTo, 2))

ActiveWindow.Left = Val(Mid(.Names("WinLeft").RefersTo, 2))

ActiveWindow.Width = Val(Mid(.Names("WinWidth").RefersTo, 2))

ActiveWindow.Height = Val(Mid(.Names("WinHeight").RefersTo, 2))

End With End Sub

Mit diesem Ansatz können Sie die Arbeitsmappe einfach an einen beliebigen Ort übertragen, und die Makros sorgen dafür, dass die Positionsinformationen für das Arbeitsmappenfenster gespeichert und wiederverwendet werden.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (10091) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.