Панели команд надстроек не отображаются и не удаляются в Excel 2013 или более поздней версии при загрузке или выгрузке надстроек
Симптомы
При использовании надстроек в Microsoft Excel 2013 или более поздней версии возникают следующие проблемы.
Проблема 1
При загрузке надстройки Excel (xlam) или надстройки Excel 97-2003 (xla) панели команд надстройки не отображаются автоматически. Вместо этого необходимо закрыть все книги, а затем перезапустить Excel, чтобы отобразить панели команд.
Проблема 2
При выгрузке надстройки Excel (.xsm) или надстройки Excel 97–2003 (.xla) или закрытии книги Excel с поддержкой макросов (XLSM), содержащей панели команд, панели команд надстройки или книги с поддержкой макросов не удаляются из всех открытых книг.
Причина
Эти проблемы возникают из-за интерфейса SDI в Excel 2013 или более поздней версии. При использовании устаревшего объекта CommandBar для создания элементов меню элементы меню добавляются на вкладку Add-Ins ленты. В Excel 2013 или более поздней версии каждая книга имеет собственную ленту. Поэтому при загрузке или выгрузке надстроек после создания ленты книги лента не обновляется.
В следующем примере кода создаются элементы меню с помощью объекта CommandBar:
Application.CommandBars("Worksheet Menu Bar").Controls.Add Type:=msoControlPopup
Обходной путь
Чтобы обойти проблему 1, закройте все открытые книги, а затем перезапустите Excel.
Чтобы обойти проблему 2, используйте один из следующих методов:
Замените панели команд элементом ленты (XML) в надстройке или книге с поддержкой макросов. Дополнительные сведения о ленте (XML) см. в разделе Xml ленты.
В Workbook_BeforeClose события надстройки или книги с поддержкой макросов циклически просмотрите все открытые окна и удалите панели команд. Ниже приведен пример кода:
For Each wnd In Application.Windows wnd.Activate Application.CommandBars("<ToolbarName>").Delete Next wnd
Примечание.
В этом коде заполнитель <ToolbarName> представляет имя панели команд.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по