Программирование для интерфейса с одним документом в ExcelProgramming for the Single Document Interface in Excel

Сведения о программировании для интерфейса единого документа в Excel.Learn about programming considerations for the Single Document Interface in Excel.

Сравнение интерфейсов с одним и несколькими документами в Excel 2010 и Excel 2013Comparing Single and Multiple Document Interfaces in Excel 2010 and Excel 2013

Новой функцией в Excel 2013 является единый интерфейс документов (SDI).A new feature in Excel 2013 is the single document interface (SDI). SDI — это способ организации графических приложений ПОЛЬЗОВАТЕЛЬСКОГО интерфейса в отдельные окна, которые диспетчер окон операционной системы обрабатывает отдельно.SDI is a method of organizing graphical user interface (UI) applications into individual windows that the operating system window manager handles separately. В Excel 2013 каждое окно Excel может содержать только одну книгу, каждый из которых имеет собственный пользовательский интерфейс ленты (см. рисунок 1).In Excel 2013, each Excel window can contain only one workbook, and each has its own ribbon UI (see Figure 1). По умолчанию при открытии новой книги она будет отображаться в другом окне Excel, несмотря на то, что это тот же экземпляр Excel.By default when you open a new workbook, it will be displayed in another Excel window, even though it is the same Excel instance.

Рис. 1. Интерфейс с одним документом в Excel 2013Figure 1. Single Document Interface in Excel 2013

Интерфейс с одним документом в Excel 2013

Это отличается от многодокументного интерфейса (MDI), в котором одно родительское окно используется для хранения нескольких вложенных дочерних окон, только если у родительского окна есть меню или панель инструментов.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. В Excel 2010 каждая книга в отдельном экземпляре Excel использует общий пользовательский интерфейс ленты (см. рисунок 2).In Excel 2010, each workbook in a single instance of Excel utilizes a common ribbon UI (see Figure 2).

Рис. 2. Интерфейс с несколькими документами в Excel 2010Figure 2. Multiple Document Interface in Excel 2010

Интерфейс с несколькими документами в Excel 2010

Excel 2010 использует MDI, то есть одно окно на уровне приложения, содержащее все книги, открытые в определенном экземпляре Excel.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. Окна книги можно упорядочивать в окне приложения Excel, а все совместно использовать один пользовательский интерфейс ленты.The windows of the workbook can be arranged inside the Excel app window, all sharing the same Ribbon UI. SDI в Excel означает, что каждая книга будет иметь собственное окно приложения верхнего уровня и имеет собственный пользовательский интерфейс ленты.SDI in Excel means that each workbook will have its own top level app window, and has its own corresponding Ribbon UI.

Примечание

В Excel отсутствует режим совместимости с MDI.There is no MDI compatibility option in Excel.

В системах с двумя мониторами SDI-сервер в Excel позволяет параллельно сравнивать две книги, перетаскивая каждую книгу на другой монитор.In dual-monitor systems, the SDI in Excel enables side-by-side comparisons of two workbooks by dragging each workbook to a different monitor. Каждая книга работает независимо от другой.Each workbook works independently of the other.

Для отображения SDI и MDI в действии при наличии доступных и Excel 2010, и Excel 2013, выполните указанные ниже действия.To see SDI and MDI in action, if you have both Excel 2010 and Excel 2013 available, perform the following steps.

Противоположность числу процессов для интерфейсов MDI и SDITo contrast the number of processes for MDI and SDI interfaces

  1. В меню Пуск Windows запустите Excel 2010.On the Windows Start menu, start Excel 2010.

  2. Начните второй экземпляр Excel.Start a second occurrence of Excel. Убедитесь, что отображаются два окна Excel.Verify that the two Excel windows are displayed.

  3. В панели задач Windows выберите пункт запустить диспетчер задач.On the Windows Task Bar, choose and then select Start Task Manager.

  4. Перейдите на вкладку процессы , а затем прокрутите вниз, пока не увидите две записи Excel. exe .Choose the Processes tab and then scroll down until you see the two Excel.exe entries. Это означает, что по умолчанию Excel открывает новый экземпляр каждый раз при его вызове (два экземпляра Excel).This tells you that, by default, Excel opens a new instance each time it is called (two Excel instances).

  5. Закройте два экземпляра Excel.Close the two instances of Excel.

  6. В меню Пуск Windows выберите Excel 2013.On the Windows Start menu, choose Excel 2013.

  7. Начните второй экземпляр Excel.Start a second occurrence of Excel. Убедитесь, что отображаются два окна Excel.Verify that the two Excel windows are displayed.

  8. Снова запустите диспетчер задач.Start the Task Manager again.

  9. На вкладке процессы прокрутите вниз, пока не появится файл Excel. exe.On the Processes tab scroll down until you see Excel.exe. Имейте в виду, что несмотря на то, что вы открыли два экземпляра Excel, две книги хранятся в одном экземпляре Excel.Be aware that although you opened two occurrences of Excel, the two workbooks are contained in the same single instance of Excel.

Чтобы узнать, как работают SDI и MDI в экземпляре Excel, выполните указанные ниже действия.To see how SDI and MDI work inside of an instance of Excel, perform the following steps.

Сравнение количества экземпляров Excel для интерфейсов MDI и SDITo compare the number of Excel instances for MDI and SDI interfaces

  1. В меню Пуск Windows выберите Excel 2010.On the Windows Start menu, choose Excel 2010.

  2. Откройте окно Excel, чтобы сделать его активным, и убедитесь, что book1 является текущей книгой.Choose the Excel window to make it active and verify that Book1 is the current workbook.

  3. Нажмите клавиши CTRL + N, чтобы открыть другую книгу.Press CTRL + N to open another workbook. Убедитесь, что book2 теперь является текущей книгой.Verify that Book2 is now the current workbook.

  4. Сверните book2 и затем см book1.Minimize Book2 and then see Book1. Обе книги хранятся в одном и том же экземпляре Excel.Both workbooks are contained in the same instance of Excel.

  5. Закройте Excel.Close Excel.

  6. В меню Пуск Windows выберите Excel 2013.On the Windows Start menu, choose Excel 2013.

  7. Откройте окно Excel, чтобы сделать его активным, и убедитесь, что book1 является текущей книгой.Choose the Excel window to make it active and verify that Book1 is the current workbook.

  8. Нажмите клавиши CTRL + N, чтобы открыть другую книгу.Press CTRL + N to open another workbook. Убедитесь, что book2 открыт в отдельном окне (но все еще находится в том же экземпляре Excel).Verify that Book2 is opened in a separate window (but still in the same instance of Excel).

  9. Закройте Excel.Close Excel.

Примечание

Можно открыть несколько экземпляров Excel с помощью следующего параметра командной строки: Excel. exe/x.You can open multiple instances of Excel by using the following command line switch: excel.exe /x. Этот параметр запускает Excel в новом процессе.This switch starts Excel in a new process.

В этой статье мы обсудим реализацию SDI в ПОЛЬЗОВАТЕЛЬСКОМ ИНТЕРФЕЙСе Excel и влияние на возможности программирования в Excel.In this article, we will discuss the implementation of the SDI in the Excel UI and how it impacts programmability in Excel.

Изменения в пользовательском интерфейсеWhat's changed in the User Interface

Если после открытия книги Excel вы не увидите кнопки состояния окна (свертывание, развертывание_и Восстановление)_ в правом верхнем углу ленты.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. На рисунке 3 показаны кнопки состояния окна, доступные в Excel и Excel 2007.Figure 3 shows the window state buttons that are available in Excel and Excel 2007. Так как окно верхнего уровня теперь привязано непосредственно к одной книге или представлению книги, для ПОЛЬЗОВАТЕЛЬСКОГО интерфейса управления Windows в Excel больше не требуется.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.

Рис. 3. Пользовательский интерфейс состояния Windows в Excel 2010Figure 3. Windows state UI in Excel 2010

Элементы интерфейса Windows в Excel 2010

Кроме того, начиная с Excel, вы больше не используете несколько окон книги внутри одного окна экземпляра Excel, как показано на рисунке 4.Additionally, starting in Excel, there are no longer multiple workbook windows inside of a single Excel instance window such as seen in Figure 4.

На рисунке 4. Несколько книг в отдельном окне экземпляра ExcelFigure 4. Multiple workbooks in a single Excel instance window

Несколько книг в одном экземпляре Excel

Пересчет и формулыRecalculation and Formulas

Пересчет в Excel по-прежнему будет иметь значение "Global", что означает, что они появятся в книгах в одном экземпляре Excel.Recalculations in Excel will still be "global" meaning that they occur across workbooks in the same instance of Excel. Формулы, ссылающиеся на книги, открытые в одном и том же экземпляре Excel, будут участвовать в вычислениях вместе и будут совместно использовать один и тот же режим вычислений книги (автоматический, автоматически, кроме таблиц данных, и вручную).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).

В MDI существует только одна строка формул для обработки всех открытых книг в этом экземпляре Excel.In MDI, there is only one formula bar to handle all open workbooks in that instance of Excel. В SDI для каждой книги имеется одна строка формул.In SDI, there is one formula bar per workbook. Для SDI при редактировании ссылок между книгами в формуле на строках формул исходной и целевой книги отображается редактируемая формула, как показано на рисунке 5.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.

На рисунке 5. Обновление формул между книгамиFigure 5. Updating cross-workbook formulas

Обновление формул, присутствующих в нескольких книгах

Настраиваемые области задачCustom Task Panes

Настраиваемые области задач, вложенные в окно верхнего уровня в MDI, теперь присоединены к окну конкретной книги в SDI.Custom Task Panes that attached to a top level window in MDI are now attached to a particular workbook's window in SDI. При переключении в другую книгу активизируется окно книги, в котором не обязательно будет присвоена настраиваемая область задач, если код разработчика не будет обновлен для отображения настраиваемой области задач для этой книги.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.

Чтобы подвести итог, как разработчику, вам потребуется:To summarize, as a developer, you will want to:

  • Убедитесь, что для всех книг, где требуется отобразить настраиваемую область задач, вы пишете код, чтобы сделать это явным образом.Ensure that for any workbooks where you want to show the custom task pane, you write code to explicitly do that.

  • Убедитесь, что вы явно обрабатываете обновление состояния настраиваемой области задач во всех экземплярах, если хотите, чтобы все настраиваемые области задач отражали одно и то же состояние.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. Например, флажок устанавливается для пользователя, и вы хотите, чтобы оно отражалось на всех настраиваемых панелях задач во всех экземплярах Excel.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.

Настраиваемые лентыCustom Ribbons

Настраиваемые вкладки ленты и элементы управления, которые предполагают наличие одного ПОЛЬЗОВАТЕЛЬСКОГО интерфейса ленты для каждого экземпляра приложения в предыдущих версиях Excel, теперь будут распространяться на ленту книги в Excel.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. В то время как в ИНТЕРФЕЙСе MDI разработчику настраиваемой ленты не требовалось расдумать несколько экземпляров элементов управления на различных экземплярах ленты Excel, с помощью SDI они должны учитывать эту ситуацию.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.

Если вы хотите, чтобы все элементы управления ленты были одинаково расположены в открытых книгах, необходимо выполнить следующие действия:If you want to keep all the ribbon UI controls in the same state across open workbooks, you will need to:

  • Убедитесь, что код может циклически перемещаться по окнам книги и обновлять состояние элементов управления.Ensure that the code is able to cycle through the workbook windows and update the state of the controls.

OROR

  • Кэширование состояния элементов управления таким образом, что когда пользователь переключается на другую книгу, это событие может быть захвачено, а элементы управления обновлены в рамках переключения окон.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.

Кроме того, рассмотрим ситуацию, когда вы разрабатываете код для добавления пользовательского элемента управления Application.Commandbar пользовательского интерфейса с помощью для доступа к ленте.Additionally, consider the case where you develop code to add a custom UI control by using Application.Commandbar to access the ribbon. Когда вы попытаетесь получить доступ к этому элементу управления в дальнейшем, вам потребуется учитывать, что активная книга может не быть той же книгой, в которую вы добавили элемент управления.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.

Рекомендации по использованию кода VBAConsiderations for VBA code

При переходе на SDI все методы, события и свойства окон уровня приложения Excel не затрагиваются и работают в предыдущих версиях Excel ( Application.ActiveWindow Application.Windowsнапример,, и т. д.).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).

В Excel все методы окон уровня книги , события и свойства теперь действуют в окне верхнего уровня (например, Workbook.WindowActivate событие по-прежнему запускается при переходе на определенную книгу, Workbook.Resize событие по-прежнему запускается при переходе на определенную книгу). Размеры книги изменяются, и ThisWorkbook.Windows(1).Height ThisWorkbook.Windows(1).Width ThisWorkbook.Windows(1).Left ThisWorkbook.Windows(1).Right ThisWorkbook.Windows(1).Minimize,,,, ThisWorkbook.Windows(1).Maximize и так далее будут работать в окне верхнего уровня для активной книги.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).

В приведенной ниже таблице перечислены особые случаи.Special cases are listed in the following table.

Таблица 1. Поведение объектной модели с SDITable 1. Object Model Behavior with the SDI

FunctionFunction ОписаниеDescription Ограничения SDISDI Implications
Application.Visible Возвращает или задает логическое значение, определяющее, является ли объект видимым.Returns or sets a Boolean value that determines whether the object is visible. Для чтения и записи.Read/write. Если все окна скрыты:If all windows are hidden:
  • Application. Visible становится ложнымApplication.Visible becomes False

  • Установка для приложения. Visible to true отображение всех скрытых оконSetting Application.Visible to True displays all hidden windows

  • При открытии документа с помощью командной консоли отображается только то, что окно и приложение. видимо теперь trueOpening a document via the shell only shows that window and Application.Visible is now True

ЩелчкAdditionally:
  • Application. Visible = false скрывает все и Application. Visible = true отображает все, игнорируя все параметры на уровне документа.Application.Visible = False hides everything and Application.Visible = True displays everything, ignoring any document-level settings

  • Если все окна скрыты с помощью параметра на уровне окна, то настройка уровня приложения также включаетсяIf all of the windows are hidden via the window-level setting then the application-level setting toggles as well

  • Если отображается по крайней мере одно окно, то параметр уровня приложения имеет значение trueHaving at least one window displayed means that the application-level setting is True

Application.ShowWindowsInTaskbar Значение true , если для каждой открытой книги существует отдельная кнопка панели задач Windows.True if there's a separate Windows taskbar button for each open workbook. Значение по умолчанию равно True.The default value is True. Для чтения и записи, Boolean.Read/write Boolean. Этот параметр не рекомендуется использовать в Excel.This setting is deprecated in Excel.
Application.Caption Возвращает или задает строковое значение, представляющее имя, которое отображается в заголовке главного окна Microsoft Excel.Returns or sets a String value that represents the name that appears in the title bar of the main Microsoft Excel window. Обновление всех окон для этого экземпляра Excel.Updates all windows for that instance of Excel.
Application.Hwnd Возвращает значение типа Long , обозначающее дескриптор окна верхнего уровня в окне Microsoft Excel.Returns a Long indicating the top-level window handle of the Microsoft Excel window. Только для чтения.Read-only. Вернет дескриптор активного окна.Will return the active window's handle.
Application.FormulaBarHeight Позволяет пользователю указать высоту строки формул в строках.Enables the user to specify the height of the formula bar in lines. Для чтения и записи, Long.Read/write Long. Работает в текущем активном окне книги; не все окна для этого экземпляра Excel.Operates on the currently active workbook window; not all of the windows for this instance of Excel.
Application.DisplayFormulaBar Значение true , если строка формул отображается.True if the formula bar is displayed. Для чтения и записи, Boolean.Read/write Boolean. Работает со всеми окнами для этого экземпляра Excel.Operates on all windows for this instance of Excel.
Workbook.Windows Возвращает коллекцию Windows, которая представляет все окна указанной книги.Returns a Windows collection that represents all the windows in the specified workbook. ОбъектWindows, предназначенный только для чтения.Read-only Windows Object. Поведение не изменяется.No change in behavior. Возвращает коллекцию окон для этой книги, например области задач, дополнительные представления.Returns the collection of windows for this book such as task panes, additional views.
Workbook.WindowResize Возникает при изменении размера любого окна книги.Occurs when any workbook window is resized. Поведение не изменяется.No change in behavior. Активируется при изменении размера окна книги (верхнего уровня).Is triggered when a workbook window (the top-level) is resized.
Window.Caption Возвращает или задает значение Variant , представляющее имя, которое отображается в заголовке окна документа.Returns or sets a Variant value that represents the name that appears in the title bar of the document window. Поведение не изменяется.No change in behavior.
Workbook.Protect(Password, Structure, Windows) Защищает книгу, чтобы ее нельзя было изменить.Protects a workbook so that it cannot be modified. Независимо от значения параметра Windows (true или false), Защита структуры окна не будет включена.Regardless of the value for the Windows parameter (True or False), the window structure protection will NOT be enabled. Если задано значение true , не отображается сообщение об ошибке времени выполнения, но эта часть вызова процедуры возвратит значение No-Op.No runtime error is displayed if True is specified, but that portion of the procedure call will return a NO-OP.

Примечание

В пользовательском коде не требуется вносить изменения, чтобы команды XLM продолжали работать должным образом в приложении SDI Excel.There are no changes required in custom code so that XLM commands continue to work as expected in SDI Excel.

Устаревшие окна защищенной книгиDeprecating Protect Workbook Windows

В SDI каждая книга имеет собственное окно верхнего уровня, которое можно восстановить, свернуть и закрыть.In SDI, each workbook has its own top-level window that you can restore, minimize, and close. Чтобы свести к минимуму путаницы, которые могут возникать при невозможности перемещения, изменения размера или закрытия этого окна верхнего уровня, параметр Windows в функции защитить книгу в Excel больше недоступен (см. рис. 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). В таблице 2 описывается это действие.Table 2 describes this action further.

На рисунке 6. Параметр Windows в диалоговом окне "Защита книги" отключенFigure 6. Windows option of the Protect Workbook dialog box is disabled

Опция Windows в диалоговом окне "Защита книги"

ActionAction ПоведениеBehavior
Открытие книги, созданной в более ранней версии Excel с включенной функцией защиты оконOpen a workbook created in an earlier version of Excel, with Window Protection enabled Excel распознает расположение и атрибуты размера окна, но не запрещает пользователю расположить или закрыть эти окна.Excel will recognize the window location and size attributes, but will not prevent the user from arranging or closing these windows.
Просмотр диалогового окна " Защита структуры и окон "View the Protect Structure and Windows dialog box В Excel будет отображаться диалоговое окно с отключенным параметром Windows .Excel will display the dialog box but with the Windows option disabled.

Решения проблем с SDISolutions for SDI Issues

В следующем разделе приведены методы обхода проблем, с которыми вы можете столкнуться при использовании SDI.The following section provides workarounds for issues you may encounter when using the SDI.

  • Книга не может быть закрыта нажатием на красную кнопку закрытия , если эта книга открывается программным способом через модальную пользовательскую форму.A workbook cannot be closed by clicking the red "X" Close button when that workbook is programmatically opened via a modal user form. Чтобы обойти эту проблему, рекомендуется добавить следующий код в процедуру события макета формы пользователя, а затем открыть форму пользователя как немодальную.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
    

    Кроме того, можно открыть окно книги, активировать любое другое окно и повторно активировать окно книги.Another option is to open the workbook window, activate any other window, and then reactivate the workbook window. Теперь вы можете закрыть книгу, нажав кнопку Закрыть .You should now be able to close the workbook using the Close button.

  • Предположим, что код VBA открывает несколько книг и использует свойство датаентримоде для управления вводом данных и закрытием книги.Assume that your VBA code opens multiple workbooks and uses the DataEntryMode property to control data entry and workbook closure. В модели SDI для Excel, так как каждая книга состоит из собственного процесса, свойство датаентримоде , используемое в одной книге, не распознает наличие другой книги и, следовательно, не влияет на их взаимодействие.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. Чтобы обойти эту проблему, существует несколько вариантов.To work around this issue, there are a couple of options. Дополнительные книги или листы можно скрыть с помощью Window.Visible = False или Sheet.Visible = Falseсоответственно.You can hide the extra workbooks or worksheets by using Window.Visible = False or Sheet.Visible = False, respectively. Вы также можете обнаруживать и отменять события закрытия с Workbook.BeforeClose(Cancel) = Trueпомощью.You can also detect and cancel any closing events by using Workbook.BeforeClose(Cancel) = True.

  • Панели инструментов, добавленные в книги Excel с помощью кода панели команд и XLA, не будут отображаться до закрытия и повторного открытия книги.Toolbars added to Excel workbooks via command bar code and XLA files will not be displayed until after you close and reopen the workbook. Использование панелей команд для настройки ПОЛЬЗОВАТЕЛЬСКОГО интерфейса было устаревшим, начиная с Excel 2007.Using command bars to customize the UI was deprecated starting in Excel 2007. Оптимальное решение — настроить ленту с помощью XML-файлов, как описано в статье сведения о настройке ленты 2007 Office Fluent для разработчиков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

    Кроме того, можно использовать событие уровня приложения, чтобы обнаружить новые книги, открывающие их, а Application.Windows затем использовать вместо книг для добавления элемента управления ленты.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. Ниже приведен пример кода, который можно использовать для выполнения этой задачи.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
    

    Приведенный ниже код используется для удаления панели инструментов перед закрытием книги.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
    
  • В Excel 2010 немодальная пользовательская форма отображается как окно верхнего уровня по умолчанию поверх всех окон Excel.In Excel 2010, a modeless user form is displayed as the top-level window on top of all Excel windows by default. В Excel 2013 немодальная пользовательская форма отображается только в верхней части окна книги, которая была активна при отображении формы пользователя.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. Excel (наиболее ценный специалист по Карела Яна) содержит объяснение проблемы и решение на его веб-странице по адресу https://www.jkp-ads.com/articles/keepuserformontop.asp.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.

СводкаSummary

Новый интерфейс единого документа в Excel 2013 упрощает работу с несколькими книгами.The new Single Document Interface in Excel 2013 makes it easy to work with multiple workbooks. Вы можете даже перетащить книги на другие мониторы для удобства.You can even drag the workbooks to different monitors for convenience. Необходимо только помнить о том, что существует только одно окно верхнего уровня и одно меню ПОЛЬЗОВАТЕЛЬСКОГО интерфейса ленты для каждой книги.You just need to remember that there is only one top-level window and one ribbon UI menu per workbook. Для этого может потребоваться обновление существующего кода для кэширования состояния элементов управления и параметров при переходе с книги в книгу.This may require that you update any existing code to cache the state of controls and settings as you move from workbook to workbook.

См. такжеSee also

Дополнительные сведения о темах, описанных в этой статье, приведены в следующих расположениях.Find addition information on the topics discussed in this article at the following locations.

Поддержка и обратная связьSupport and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.