Programmieren für die Einzeldokumentschnittstelle (Single Document Interface, SDI) in ExcelProgramming for the Single Document Interface in Excel

Überlegungen für das Programmieren für die Einzeldokumentschnittstelle in Excel.Learn about programming considerations for the Single Document Interface in Excel.

Vergleichen von Einzeldokumentschnittstellen (SDI) und Schnittstellen für mehrere Dokumente (MDI) in Excel 2010 und Excel 2013Comparing Single and Multiple Document Interfaces in Excel 2010 and Excel 2013

Eine neue Funktion in Excel 2013 stellt die Einzeldokumentschnittstelle (Single Document Interface, SDI) dar.A new feature in Excel 2013 is the single document interface (SDI). SDI ist eine Methode für die Organisation der grafischen Benutzeroberflächenanwendungen in einzelne Fenster, die vom Fenster-Manager des Betriebssystems getrennt gehandhabt werden.SDI is a method of organizing graphical user interface (UI) applications into individual windows that the operating system window manager handles separately. Jedes Excel-Fenster kann in Excel 2013 nur eine Arbeitsmappe enthalten und hat eine eigene Menüband-Benutzeroberfläche (Abbildung 1).In Excel 2013, each Excel window can contain only one workbook, and each has its own ribbon UI (see Figure 1). Standardmäßig wird beim Öffnen einer neuen Arbeitsmappe diese in einem neuen Excel-Fenster angezeigt, selbst bei gleicher Excel-Instanz.By default when you open a new workbook, it will be displayed in another Excel window, even though it is the same Excel instance.

Abbildung 1. Einzeldokumentschnittstelle in Excel 2013Figure 1. Single Document Interface in Excel 2013

Oberfläche mit nur einem Dokument in Excel 2013

Diese steht im Gegensatz zur Schnittstelle mit mehreren Dokumenten (Multiple Document Interface, MDI), in der ein einzelnes übergeordnetes Fenster mehrere geschachtelte untergeordnete Fenster enthält, wobei nur das übergeordnete Fenster über ein Menü oder eine Symbolleiste verfügt.This contrasts with a multiple document interface (MDI), in which a single parent window is used to contain multiple nested child windows, with only the parent window having a menu or tool bar. Jede Arbeitsmappe in einer Instanz von Excel verwendet in Excel 2010 eine gemeinsame Menüband-Benutzeroberfläche (Abbildung 2).In Excel 2010, each workbook in a single instance of Excel utilizes a common ribbon UI (see Figure 2).

Abbildung 2. Schnittstelle mit mehreren Dokumenten in Excel 2010Figure 2. Multiple Document Interface in Excel 2010

Oberfläche mit mehreren Dokumenten in Excel 2010

Excel 2010 verwendet das MDI, was bedeutet, dass es ein einzelnes Fenster auf Anwendungsebene enthält, in dem alle Arbeitsmappen vorhanden sind, die in einer bestimmten Excel-Instanz geöffnet sind.Excel 2010 uses the MDI, which means that there is a single application-level window holding all the workbooks that are open in a particular instance of Excel. Die Fenster der Arbeitsmappe können innerhalb des Excel-App-Fensters angeordnet werden, die alle dieselbe Menüband-Benutzeroberfläche verwenden.The windows of the workbook can be arranged inside the Excel app window, all sharing the same Ribbon UI. SDI in Excel bedeutet, dass jede Arbeitsmappe über ein eigenes App-Fenster auf oberster Ebene verfügt und über eine eigene entsprechende Menüband-Benutzeroberfläche verfügt.SDI in Excel means that each workbook will have its own top level app window, and has its own corresponding Ribbon UI.

Hinweis

Es gibt keine MDI-Kompatibilitätsoption in Excel.There is no MDI compatibility option in Excel.

In Systemen mit zwei Monitoren können mit der SDI in Excel zwei Arbeitsmappen nebeneinander verglichen werden, indem Sie jede Arbeitsmappe auf einen anderen Monitor ziehen.In dual-monitor systems, the SDI in Excel enables side-by-side comparisons of two workbooks by dragging each workbook to a different monitor. Jede Arbeitsmappe funktioniert unabhängig voneinander.Each workbook works independently of the other.

Führen Sie die folgenden Schritte durch, um SDI und MDI in Aktion zu sehen, wenn Excel 2010 und Excel 2013 zur Verfügung stehen.To see SDI and MDI in action, if you have both Excel 2010 and Excel 2013 available, perform the following steps.

So vergleichen Sie die Anzahl von Prozessen für MDI-und SDI-SchnittstellenTo contrast the number of processes for MDI and SDI interfaces

  1. Starten Sie im Windows-Startmenü Excel 2010.On the Windows Start menu, start Excel 2010.

  2. Starten Sie eine zweite Instanz von Excel.Start a second occurrence of Excel. Stellen Sie sicher, dass zwei Excel-Fenster angezeigt werden.Verify that the two Excel windows are displayed.

  3. Wählen Sie auf der Windows-Taskleiste Task-Manager starten. Manager.On the Windows Task Bar, choose and then select Start Task Manager.

  4. Wählen Sie die Registerkarte Prozesse, und scrollen Sie so weit nach unten, bis zwei Excel.exe-Einträge angezeigt werden.Choose the Processes tab and then scroll down until you see the two Excel.exe entries. Auf diese Weise können Sie erkennen, dass Excel standardmäßig bei jedem Öffnen eine neue Instanz öffnet (Excel mit zwei Instanzen).This tells you that, by default, Excel opens a new instance each time it is called (two Excel instances).

  5. Schließen Sie die zwei Instanzen von Excel.Close the two instances of Excel.

  6. Wählen Sie im Windows-Startmenü Excel 2013.On the Windows Start menu, choose Excel 2013.

  7. Starten Sie eine zweite Instanz von Excel.Start a second occurrence of Excel. Stellen Sie sicher, dass zwei Excel-Fenster angezeigt werden.Verify that the two Excel windows are displayed.

  8. Starten Sie den Task-Manager erneut.Start the Task Manager again.

  9. Scrollen Sie auf der Registerkarte Prozesse nach unten, bis Excel. exeangezeigt wird.On the Processes tab scroll down until you see Excel.exe. Beachten Sie, dass die zwei Arbeitsmappen in der gleichen Instanz von Excel enthalten sind, obwohl Sie zwei Instanzen von Excel geöffnet haben.Be aware that although you opened two occurrences of Excel, the two workbooks are contained in the same single instance of Excel.

Führen Sie die folgenden Schritte durch, um zu sehen, wie SDI und MDI innerhalb einer Instanz von Excel funktionieren.To see how SDI and MDI work inside of an instance of Excel, perform the following steps.

So vergleichen Sie die Anzahl von Excel-Instanzen für MDI-und SDI-SchnittstellenTo compare the number of Excel instances for MDI and SDI interfaces

  1. Wählen Sie im Windows-Startmenü Excel 2010.On the Windows Start menu, choose Excel 2010.

  2. Wählen Sie zum Aktivieren das Excel-Fenster, und stellen Sie sicher, dass Arbeitsmappe1 die aktuelle Arbeitsmappe ist.Choose the Excel window to make it active and verify that Book1 is the current workbook.

  3. Drücken Sie zum Öffnen einer anderen Arbeitsmappe STRG+N.Press CTRL + N to open another workbook. Stellen Sie sicher, dass Arbeitsmappe2 die aktuelle Arbeitsmappe ist.Verify that Book2 is now the current workbook.

  4. Minimieren Sie Arbeitsmappe2, und zeigen Sie Arbeitsmappe1 an.Minimize Book2 and then see Book1. Beide Arbeitsmappen sind in der gleichen Instanz von Excel enthalten.Both workbooks are contained in the same instance of Excel.

  5. Schließen Sie Excel.Close Excel.

  6. Wählen Sie im Windows-Startmenü Excel 2013.On the Windows Start menu, choose Excel 2013.

  7. Wählen Sie zum Aktivieren das Excel-Fenster, und stellen Sie sicher, dass Arbeitsmappe1 die aktuelle Arbeitsmappe ist.Choose the Excel window to make it active and verify that Book1 is the current workbook.

  8. Drücken Sie zum Öffnen einer anderen Arbeitsmappe STRG+N.Press CTRL + N to open another workbook. Stellen Sie sicher, dass Arbeitsmappe2 in einem separaten Fenster (jedoch in der gleichen Instanz von Excel) geöffnet ist.Verify that Book2 is opened in a separate window (but still in the same instance of Excel).

  9. Schließen Sie Excel.Close Excel.

Hinweis

Sie können mehrere Instanzen von Excel mithilfe der folgenden Befehlszeilenoption öffnen: Excel. exe/x.You can open multiple instances of Excel by using the following command line switch: excel.exe /x. Diese Option startet Excel in einem neuen Prozess.This switch starts Excel in a new process.

In diesem Artikel wird die Implementierung der SDI in die Excel-Benutzeroberfläche und die Auswirkungen auf die Programmierbarkeit in Excel beschrieben.In this article, we will discuss the implementation of the SDI in the Excel UI and how it impacts programmability in Excel.

Änderungen an der BenutzeroberflächeWhat's changed in the User Interface

Wenn Sie nach dem Öffnen einer Excel-Arbeitsmappe genau hinsehen, werden die Fenster statusschaltflächen (minimieren, _maximieren_und Wiederherstellen) in der oberen rechten Ecke des Menübands nicht mehr angezeigt.If you look closely after opening an Excel workbook, you no longer see the window state buttons (minimize, maximize, and restore) in the upper-right corner of the ribbon. Abbildung 3 enthält die Fensterzustandschaltflächen, die in Excel und Excel 2007 verfügbar sind.Figure 3 shows the window state buttons that are available in Excel and Excel 2007. Da die Fenster der obersten Ebene jetzt direkt mit einer einzelnen Arbeitsmappe oder Arbeitsmappenansicht verknüpft sind, ist die Benutzeroberfläche der Fensterverwaltung in Excel nicht mehr notwendig.Because the top-level window is now tied directly to a single workbook or workbook view, there is no longer a need for the windows management UI in Excel.

Abbildung 3. Benutzeroberfläche der Fensterzustandsverwaltung in Excel 2010Figure 3. Windows state UI in Excel 2010

Windows-Statusbenutzeroberfläche in Excel 2010

Zudem werden ab Excel mehrere Arbeitsmappenfenster, wie in Abbildung 4 dargestellt, nicht länger innerhalb eines einzelnen Fensters einer Excel-Instanz angezeigt.Additionally, starting in Excel, there are no longer multiple workbook windows inside of a single Excel instance window such as seen in Figure 4.

Abbildung 4. Mehrere Arbeitsmappen in einem einzelnen Fenster einer Excel-InstanzFigure 4. Multiple workbooks in a single Excel instance window

Mehrere Arbeitsmappen in einer einzelnen Excel-Instanz

Neuberechnung und FormelnRecalculation and Formulas

Neuberechnungen in Excel sind weiterhin "Global", was bedeutet, dass Sie über Arbeitsmappen in derselben Excel-Instanz hinweg auftreten.Recalculations in Excel will still be "global" meaning that they occur across workbooks in the same instance of Excel. Formeln, die auf Arbeitsmappen verweisen, die in derselben Instanz von Excel geöffnet sind, werden gemeinsam an Berechnungen beteiligt und verwenden denselben Arbeitsmappen-Berechnungsmodus (automatisch, automatisch mit Ausnahme von Datentabellen und manuell).Formulas that reference across workbooks that are open in the same instance of Excel will participate in calculations together and will share the same workbook calculation mode (automatic, automatic except for data tables, and manual).

In MDI gibt es nur eine Bearbeitungsleiste, um alle geöffneten Arbeitsmappen in dieser Instanz von Excel zu handhaben.In MDI, there is only one formula bar to handle all open workbooks in that instance of Excel. In SDI gibt es eine Bearbeitungsleiste pro Arbeitsmappe.In SDI, there is one formula bar per workbook. Beim Bearbeiten von Arbeitsmappenübergreifenden Verweisen in SDI in einer Formel wird die derzeit bearbeitete Formel, wie in Abbildung 5 dargestellt, sowohl in den Quell- als auch Zielarbeitsmappen-Bearbeitungsleisten angezeigt.For SDI, when editing cross-book references in a formula, both the source and target workbook formula bars will show the formula currently being edited as shown in Figure 5.

Abbildung 5. Aktualisieren von Arbeitsmappenübergreifenden FormelnFigure 5. Updating cross-workbook formulas

Aktualisieren arbeitsmappenübergreifender Formeln

Benutzerdefinierte AufgabenbereicheCustom Task Panes

An ein Fenster der obersten Ebene angefügte benutzerdefinierte Aufgabenbereiche in MDI sind nun an ein bestimmtes Fenster einer Arbeitsmappe in SDI angehängt.Custom Task Panes that attached to a top level window in MDI are now attached to a particular workbook's window in SDI. Beim Wechsel zu einer anderen Arbeitsmappe wird das Arbeitsmappenfenster aktiviert, an das nicht unbedingt der benutzerdefinierte Aufgabenbereich angefügt ist, wenn der Entwicklercode nicht speziell zum Anzeigen des benutzerdefinierten Aufgabenbereichs für diese Arbeitsmappe aktualisiert wurde.Switching to a different workbook will activate that workbook window, which won't necessarily have the custom task pane attached, unless the developer's code is updated to specifically display the custom task pane for that workbook.

Als Entwickler möchten Sie zusammenfassend folgende Ziele erreichen:To summarize, as a developer, you will want to:

  • Stellen Sie sicher, dass Sie für alle Arbeitsmappen, in denen Sie den benutzerdefinierten Aufgabenbereich anzeigen möchten, Code schreiben, um dies explizit durchführen zu können.Ensure that for any workbooks where you want to show the custom task pane, you write code to explicitly do that.

  • Sie möchten sicherstellen, dass alle benutzerdefinierten Aufgabenbereiche auf allen Instanzen explizit aktualisiert werden, wenn alle benutzerdefinierten Aufgabenbereiche den gleichen Zustand aufweisen sollen.Ensure that you explicitly handle updating the custom task pane state across all instances, if you want all of the custom task panes to reflect the same state. Wenn ein Benutzer beispielsweise ein Kontrollkästchen aktiviert, soll dies auf alle benutzerdefinierten Aufgabenbereich in allen Excel-Instanzen angewendet werden.For example, a check box is toggled to ON by the user, and you want that to be reflected across all of the custom task panes in all instances of Excel.

Benutzerdefinierte MenübänderCustom Ribbons

Benutzerdefinierte Registerkarten und Steuerelemente des Menübands, die eine einzelne Menüband-Benutzeroberfläche pro Anwendungsinstanz in vorherigen Versionen von Excel vorgesehen haben, sind nun auf dem Menüband jeder Arbeitsmappe in Excel vorhanden.Custom ribbon tabs and controls that assumed a single ribbon UI per application instance in previous versions of Excel will now be propagated onto each workbook ribbon in Excel. Während Entwickler des benutzerdefinierten Menübands in MDI sich keine Gedanken über mehrere Instanzen der Steuerelemente in verschiedenen Instanzen der Menüband-Benutzeroberfläche in Excel machen müssen, müssen Sie dieses Szenario in SDI berücksichtigen.Whereas in MDI the custom ribbon developer didn't need to consider multiple instances of their controls on different instances of Excel's ribbon UI, with SDI they will need to account for this situation.

Wenn alle Steuerelemente der Menüband-Benutzeroberfläche den gleichen Zustand für alle geöffneten Arbeitsmappen aufweisen sollen, müssen Sie folgende Aktionen durchführen:If you want to keep all the ribbon UI controls in the same state across open workbooks, you will need to:

  • Stellen Sie sicher, dass der Code alle Arbeitsmappenfenster durchlaufen und den Zustand der Steuerelemente aktualisieren kann.Ensure that the code is able to cycle through the workbook windows and update the state of the controls.

ODEROR

  • Lassen Sie den Zustand der Steuerelemente zwischenspeichern, sodass beim Wechsel zu einer anderen Arbeitsmappe durch den Benutzer dieses Ereignis erfasst wird und die Steuerelemente im Rahmen des Fensterwechsels aktualisiert werden.Cache the state of the controls so that when the user switches to another workbook, that event can be captured and the controls updated as part of the window switch.

Berücksichtigen Sie des Weiteren den Fall, in dem Sie Code zum Hinzufügen eines benutzerdefinierten Benutzeroberflächen-Steuerelements mithilfe von Application.Commandbar entwickeln, um auf das Menüband zuzugreifen.Additionally, consider the case where you develop code to add a custom UI control by using Application.Commandbar to access the ribbon. Wenn Sie zu einem späteren Zeitpunkt auf dieses Steuerelement zugreifen möchten, muss der Code die Tatsache berücksichtigen, dass die aktive Arbeitsmappe möglicherweise von der Arbeitsmappe abweicht, als das Steuerelement hinzugefügt wurde.When you try to access that control at a later time, your code will need to account for the fact that the active workbook may not be the same workbook where you added the control.

Überlegungen für VBA-CodeConsiderations for VBA code

Bei der Verschiebung zu SDI bleiben alle Fenster Methoden, Ereignisse und Eigenschaften von Excel auf Anwendungsebene unverändert und funktionieren wie in früheren Versionen von Excel (beispielsweise Application.ActiveWindow Application.Windows, usw.).With the shift to SDI, all of the Excel application-level window methods, events, and properties remain unaffected and work the way they have in previous versions of Excel (for example, Application.ActiveWindow, Application.Windows, and so on).

In Excel funktionieren alle Fenster Methoden __ , Ereignisse und Eigenschaften auf Arbeitsmappenebene nun im Fenster der obersten Ebene (beispielsweise wird das Workbook.WindowActivate Ereignis weiterhin ausgelöst, wenn Sie zu einer bestimmten Arbeitsmappe wechseln, wird das Workbook.Resize Ereignis weiterhin ausgelöst, wenn das die Größe der Arbeitsmappe wird geändert ThisWorkbook.Windows(1).Height, ThisWorkbook.Windows(1).Widthund ThisWorkbook.Windows(1).Left, ThisWorkbook.Windows(1).Right, ThisWorkbook.Windows(1).Minimize, ThisWorkbook.Windows(1).Maximize ,, usw. wird im Fenster der obersten Ebene für die aktive Arbeitsmappe ausgeführt).In Excel, all of the workbook-level window methods, events, and properties now operate on the top level window (for example, the Workbook.WindowActivate event is still triggered when you switch to a particular workbook, the Workbook.Resize event is still triggered when that workbook is resized, and ThisWorkbook.Windows(1).Height, ThisWorkbook.Windows(1).Width, ThisWorkbook.Windows(1).Left, ThisWorkbook.Windows(1).Right, ThisWorkbook.Windows(1).Minimize, ThisWorkbook.Windows(1).Maximize and so forth will operate on the top level window for the active workbook).

Sonderfälle werden in der folgenden Tabelle aufgeführt.Special cases are listed in the following table.

Tabelle 1. Objektverhaltensmodell mit der SDITable 1. Object Model Behavior with the SDI

FunktionFunction BeschreibungDescription SDI-AuswirkungenSDI Implications
Application.Visible Gibt einen Boolean-Wert zurück, der bestimmt, ob das Objekt sichtbar ist, oder legt diesen Wert fest.Returns or sets a Boolean value that determines whether the object is visible. Schreib-/Lesezugriff.Read/write. Wenn alle Fenster ausgeblendet sind:If all windows are hidden:
  • Application. Visible wird falschApplication.Visible becomes False

  • Wenn Application.Visible auf True festgelegt ist, werden alle ausgeblendeten Fenster eingeblendet.Setting Application.Visible to True displays all hidden windows

  • Wenn ein Dokument über die Shell geöffnet wird, wird nur dieses Fenster angezeigt, und Application.Visible ist nun auf True festgelegt.Opening a document via the shell only shows that window and Application.Visible is now True

Weitere Auswirkungen:Additionally:
  • Application.Visible = False blendet alles aus, und Application.Visible = True blendet alles ein, wobei alle Einstellungen auf Dokumentebene ignoriert werden.Application.Visible = False hides everything and Application.Visible = True displays everything, ignoring any document-level settings

  • Wenn alle Fenster mit der Einstellung auf Fensterebene ausgeblendet sind, wird die Eigenschaft auf Anwendungsebene ebenfalls aktiviert.If all of the windows are hidden via the window-level setting then the application-level setting toggles as well

  • Wenn mindestens ein Fenster angezeigt wird, ist die Einstellung auf Anwendungsebene auf True festgelegt.Having at least one window displayed means that the application-level setting is True

Application.ShowWindowsInTaskbar True, wenn eine separate Schaltfläche der Windows-Taskleiste für jede geöffnete Arbeitsmappe vorhanden ist.True if there's a separate Windows taskbar button for each open workbook. Der Standardwert ist True.The default value is True. Boolean-Wert mit Lese-/Schreibzugriff.Read/write Boolean. Diese Einstellung ist in Excel veraltet.This setting is deprecated in Excel.
Application.Caption Gibt einen String-Wert zurück, der den auf der Titelleiste des Hauptfensters von Microsoft Excel angezeigten Namen darstellt, oder legt diesen Wert fest.Returns or sets a String value that represents the name that appears in the title bar of the main Microsoft Excel window. Aktualisiert alle Fenster für die betreffende Instanz von Excel.Updates all windows for that instance of Excel.
Application.Hwnd Gibt einen Long-Wert zurück, der die Zugriffsnummer des Fensters auf der obersten Ebene des Microsoft Excel-Fensters anzeigt.Returns a Long indicating the top-level window handle of the Microsoft Excel window. Schreibgeschützt.Read-only. Gibt das aktive Fensterhandle zurück.Will return the active window's handle.
Application.FormulaBarHeight Ermöglicht dem Benutzer, die Höhe der Bearbeitungsleiste in Zeilen anzugeben.Enables the user to specify the height of the formula bar in lines. Long mit Lese-/Schreibzugriff.Read/write Long. Wird nur auf das aktive Arbeitsmappenfenster angewendet, und nicht auf alle Fenster für diese Instanz von Excel.Operates on the currently active workbook window; not all of the windows for this instance of Excel.
Application.DisplayFormulaBar True, wenn die Bearbeitungsleiste angezeigt wird.True if the formula bar is displayed. Lese-/Schreibzugriff - Boolean.Read/write Boolean. Wird auf alle Fenster für diese Instanz von Excel angewendet.Operates on all windows for this instance of Excel.
Workbook.Windows Gibt eine Windows-Auflistung zurück, die alle Fenster in der angegebenen Arbeitsmappe darstellt.Returns a Windows collection that represents all the windows in the specified workbook. Schreibgeschütztes Windows- Objekt.Read-only Windows Object. Keine Änderungen im Verhalten.No change in behavior. Gibt die Fensterauflistung für diese Arbeitsmappe wie Aufgabenbereiche, zusätzliche Ansichten zurück.Returns the collection of windows for this book such as task panes, additional views.
Workbook.WindowResize Tritt auf, wenn die Größe des Arbeitsmappenfensters geändert wird.Occurs when any workbook window is resized. Keine Änderungen im Verhalten.No change in behavior. Wird ausgelöst, wenn ein Arbeitsmappenfenster (der obersten Ebene) geändert wird.Is triggered when a workbook window (the top-level) is resized.
Window.Caption Gibt einen Variant -Wert zurück, der den in der Titelleiste des Dokumentfensters angezeigten Namen darstellt, oder legt diesen fest.Returns or sets a Variant value that represents the name that appears in the title bar of the document window. Keine Änderungen im Verhalten.No change in behavior.
Workbook.Protect(Password, Structure, Windows) Schützt eine Arbeitsmappe, sodass sie nicht geändert werden kann.Protects a workbook so that it cannot be modified. Unabhängig vom Wert für den Parameter Windows (true oder false) wird der Fenster Struktur Schutz nicht aktiviert.Regardless of the value for the Windows parameter (True or False), the window structure protection will NOT be enabled. Es wird kein Laufzeitfehler angezeigt, wenn True angegeben ist, dieser Teil des Prozeduraufrufs wird jedoch ein NO-OP zurückgeben.No runtime error is displayed if True is specified, but that portion of the procedure call will return a NO-OP.

Hinweis

Es sind keine Änderungen am benutzerdefinierten Code erforderlich, sodass XML-Befehle weiterhin wie erwartet in SDI in Excel funktionieren.There are no changes required in custom code so that XLM commands continue to work as expected in SDI Excel.

Veraltete Windows-Option „Arbeitsmappe schützen“Deprecating Protect Workbook Windows

In SDI verfügt jede Arbeitsmappe über ein Fenster auf oberster Ebene, das wiederhergestellt, minimiert und geschlossen werden kann.In SDI, each workbook has its own top-level window that you can restore, minimize, and close. Sie werden feststellen, dass dieses Fenster auf oberster Ebene nicht verschoben, geschlossen und seine Größe nicht geändert werden kann, und dass die Windows-Option „Arbeitsmappe schützen" in Excel nicht mehr verfügbar ist (Abbildung 6).To minimize any confusion you might encounter in not being about to move, resize, or close this top-level window, the Windows option in the Protect Workbook feature in Excel is no longer available (see Figure 6). In Tabelle 2 wird diese Aktion detaillierter beschrieben.Table 2 describes this action further.

Abbildung 6. Windows-Option des Dialogfelds „Arbeitsmappe schützen" ist deaktiviertFigure 6. Windows option of the Protect Workbook dialog box is disabled

Windows-Option des Dialogs "Arbeitsmappe schützen"

AktionAction VerhaltenBehavior
Öffnen einer Arbeitsmappe, die in einer früheren Version von Excel mit aktiviertem Fensterschutz erstellt wurdeOpen a workbook created in an earlier version of Excel, with Window Protection enabled Excel erkennt die Attribute zu Fensterspeicherort und -größe, der Benutzer wird jedoch nicht daran gehindert, diese Fenster anzuordnen oder zu schließen.Excel will recognize the window location and size attributes, but will not prevent the user from arranging or closing these windows.
Anzeigen des Dialogfelds Struktur und Fenster schützenView the Protect Structure and Windows dialog box Excel zeigt das Dialogfeld an, die Option Windows ist jedoch deaktiviert.Excel will display the dialog box but with the Windows option disabled.

Lösungen für SDI-ProblemeSolutions for SDI Issues

Der folgende Abschnitt enthält Problemumgehungen für Probleme, die beim Verwenden der SDI auftreten können.The following section provides workarounds for issues you may encounter when using the SDI.

  • Eine Arbeitsmappe kann nicht geschlossen werden, indem Sie auf die rote Schaltfläche "X" Schließen klicken, wenn diese Arbeitsmappe programmgesteuert über ein modales Benutzerformular geöffnet wird.A workbook cannot be closed by clicking the red "X" Close button when that workbook is programmatically opened via a modal user form. Problemumgehung: Fügen Sie den folgenden Code zur Layout-Ereignisprozedur des Benutzerformulars hinzu, und öffnen Sie das Benutzerformular dann ohne Modus.To work around this issue, it is suggested that you add the following code to the user form Layout event procedure and then open the user form as modeless.

      Private Sub UserForm_Layout()
          Static fSetModal As Boolean
          If fSetModal = False Then
              fSetModal = True
              Me.Hide
              Me.Show 1
          End If
      End Sub
    

    Eine andere Möglichkeit zur Problemumgehung: Öffnen Sie das Arbeitsmappenfenster, aktiveren Sie ein anderes Fenster, und aktivieren Sie dann das Arbeitsmappenfenster erneut.Another option is to open the workbook window, activate any other window, and then reactivate the workbook window. Sie müssten nun in der Lage sein, die Arbeitsmappe mithilfe der Schaltfläche Schließen schließen zu können.You should now be able to close the workbook using the Close button.

  • Angenommen, ihr VBA-Code öffnet mehrere Arbeitsmappen und verwendet die DataEntryMode -Eigenschaft zum Steuern der Dateneingabe und des Schließens von Arbeitsmappen.Assume that your VBA code opens multiple workbooks and uses the DataEntryMode property to control data entry and workbook closure. Im Excel-SDI-Modell, da jede Arbeitsmappe in einem eigenen Prozess enthalten ist, erkennt die in einer Arbeitsmappe verwendete DataEntryMode -Eigenschaft das vorhanden sein einer anderen Arbeitsmappe nicht und hat daher wenig bis gar keine Auswirkungen auf Ihre Interaktion.In the Excel SDI model, because each workbook is contained in its own process, the DataEntryMode property used in one workbook does not recognize the existence of other workbook and therefore has little to no effect on their interaction. Um dieses Problem zu umgehen, gibt es eine Reihe von Optionen.To work around this issue, there are a couple of options. Sie können die zusätzlichen Arbeitsmappen oder Arbeitsblätter mit Window.Visible = False bzw Sheet.Visible = False. ausblenden.You can hide the extra workbooks or worksheets by using Window.Visible = False or Sheet.Visible = False, respectively. Sie können auch schließen von Ereignissen mithilfe von erkennen und Abbrechen Workbook.BeforeClose(Cancel) = True.You can also detect and cancel any closing events by using Workbook.BeforeClose(Cancel) = True.

  • Zu Excel-Arbeitsmappen über Befehlsleistencode hinzugefügte Symbolleisten werden nicht angezeigt, bis die Arbeitsmappe geschlossen und erneut geöffnet wird.Toolbars added to Excel workbooks via command bar code and XLA files will not be displayed until after you close and reopen the workbook. Das Verwenden von Befehlsleisten zum Anpassen der Benutzeroberfläche ist seit Excel 2007 veraltet.Using command bars to customize the UI was deprecated starting in Excel 2007. Die optimale Lösung besteht darin, die Benutzeroberfläche des Menübands mithilfe von XML-Dateien anzupassen, wie im Artikel Anpassen des 2007 Office Fluent-Menübands für Entwickler ausführlich beschrieben.The optimal solution is to customize the ribbon UI by using XML files as described in detail in the article Customizing the 2007 Office Fluent Ribbon for Developers

    Eine weitere Möglichkeit: Sie können ein Ereignis auf Anwendungsebene verwenden, um neue geöffnete Arbeitsmappen zu ermitteln, und dann Application.Windows anstelle von Arbeitsmappen zum Hinzufügen des Steuerelements des Menübands verwenden.Another option is to use an application-level event to detect new workbooks opening and then use Application.Windows instead of workbooks to add the ribbon control. Dazu können Sie den folgenden Beispielcode verwenden.The following is sample code that can be used to accomplish this.

      Private Sub Workbook_Open()
          ToolBarsAdd
      End Sub
    
      Sub ToolBarsAdd()
          Dim oBar As CommandBar
    
          ToolBarsDelete
          Set oBar = Application.CommandBars.Add(Name:="MyToolBar")
          '
          With oBar
              With .Controls.Add(Type:=msoControlButton)
                  .OnAction = "SayHello"
                  .FaceId = 800
              End With
          End With
          oBar.Visible = True
      End Sub
    
      Sub SayHello()
          MsgBox "Hello from '" & ActiveWorkbook.Name & "'"
      End Sub
    

    Der folgende Code wird dann verwendet, um die Symbolleiste zu entfernen, bevor die Arbeitsmappe geschlossen wird.The following code would then be used to remove the toolbar before closing the workbook.

      Private Sub Workbook_BeforeClose(Cancel As Boolean)
          ToolBarsDelete
      End Sub
    
      Sub ToolBarsDelete()
      Dim wnd As Window
      On Error Resume Next
          For Each wnd In Application.Windows
              wnd.Activate
              Application.CommandBars("MyToolBar ").Delete
          Next wnd
      End Sub
    
  • In Excel 2010 wird ein nicht modales Benutzerformular standardmäßig oben auf allen Excel-Fenstern als Fenster der obersten Ebene angezeigt.In Excel 2010, a modeless user form is displayed as the top-level window on top of all Excel windows by default. In Excel 2013 wird ein Benutzerformular ohne Status nur oberhalb des Arbeitsmappenfensters angezeigt, das aktiv war, als das Benutzerformular angezeigt wurde.In Excel 2013, a modeless user form is only visible on top of the workbook window that was active when the user form was displayed. Eine Problemerläuterung und die entsprechende Lösung stellt der Excel-MVP (Most Valuable Professional) Jan Karel Pieterse auf seiner Webseite unter https://www.jkp-ads.com/articles/keepuserformontop.asp zur Verfügung.Excel Most Valuable Professional (MVP) Jan Karel Pieterse provides an explanation of the issue and a solution on his web page at https://www.jkp-ads.com/articles/keepuserformontop.asp.

ZusammenfassungSummary

Die neue einzelne Dokumentschnittstelle in Excel 2013 erleichtert das Arbeiten mit mehreren Arbeitsmappen.The new Single Document Interface in Excel 2013 makes it easy to work with multiple workbooks. Sie können die Arbeitsmappen zur Vereinfachung sogar auf unterschiedliche Monitore ziehen.You can even drag the workbooks to different monitors for convenience. Sie müssen nur daran denken, dass es nur ein Fenster auf oberster Ebene und ein Menüband-Benutzeroberflächenmenü pro Arbeitsmappe gibt.You just need to remember that there is only one top-level window and one ribbon UI menu per workbook. Möglicherweise müssen Sie einen vorhandenen Code aktualisieren, um den Status von Steuerelementen und Einstellungen beim Wechsel von Arbeitsmappe zu Arbeitsmappe zwischenzuspeichern.This may require that you update any existing code to cache the state of controls and settings as you move from workbook to workbook.

Siehe auchSee also

Weitere Informationen zu den in diesem Artikel erläuterten Themen finden Sie unter den folgenden Speicherorten.Find addition information on the topics discussed in this article at the following locations.

Support und FeedbackSupport and feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation?Have questions or feedback about Office VBA or this documentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.