Как в экселе включить customize ribbon

Обновлено: 01.07.2024

Низкоуровневый XML-редактор интерфейса Microsoft Office Fluent UI.
Поддерживает Microsoft Office 2007-2019 (Word, Excel, PowerPoint и Access) 32 и 64 бит.

Протестирован в Windows XP (32 bit), Windows Vista (64 bit),
Windows 7 (64 bit), Windows 8.1 (64 bit), Windows 10 (64 bit).

Редактор для создания ленточного интерфейса:

  1. наДстроек приложений MS Office;
  2. отдельных документов приложений MS Office;
  3. шаблона Normal, что приведёт к внедрению этого интерфейса в каждый ваш документ.

Если при открытии документа Access брандмауэр Windows запросит подтверждения функций связи для сервера, разрешите их. Доступ к базам данных Access производится 32-битным или 64-битным (в зависимости от местных драйверов и формата базы данных) локальным сервером из пакета программы, связь с которым программа осуществляет по сетевому протоколу TCP. Отсюда и запрос брандмауэра.

Если Вам понравилась моя программа, буду очень рад вашему поощрению, отправленному на любой из моих кошельков: Яндекс.Деньги или Web Mo ney , и/или всяческой популяризации этой программы в сети Internet.

На случай непредвиденных поломок, предыдущие версии Ribbon XML Editor — 8.1.3, 9.3

Низкоуровневый XML-редактор пользовательского интерфейса Fluent UI для MS Office версий 2007+. Позволяет редактировать ленточный интерфейс основных приложений MS Office. Имеет функцию экспорта и импорта кода интерфейса через файл настроек ленты, поддерживающийся с 2010-й версии офиса. Поддерживает внедрение интерфейса в надстройки, документы или шаблоны Word, Excel, PowerPoint и Access (форматы docm, docx, dotm, dotx, xlsm, xlsx, xlsb, xltm, xltx, xlam, pptm, pptx, potm, potx, ppsm, ppsx, ppam, accdb, accde и accdr).

Суть необходимости программы:

Интерфейс Microsoft Office 2007, в котором впервые появилась лента, вообще не обладал возможностью высокоуровневой пользовательской настройки. В Microsoft Office, начиная с версии 2010, этот недостаток был частично исправлен; тем не менее, реализованные в нём высокоуровневые средства конфигурирования не всегда позволяют добиться желаемого. Так, к примеру, для добавленной вкладки и группы нельзя определить динамические атрибуты; нельзя группировать элементы при помощи box; на вкладке можно разместить только стандартные элементы либо кнопки запуска макросов; нельзя сохранить настроенный интерфейс внутри шаблона, документа или надстройки.

Работая в Ribbon XML Editor, вы не только можете легко создать интерфейс любой сложности (благодаря, в том числе, контекстно-чувствительной функции автодополнения), но и полностью контролировать этот процесс на уровне XML-кода. Кроме того, на основе построенной разметки интерфейса и использованных в ней имён процедур обратного вызова, редактор может сгенерировать шаблоны этих процедур в виде отдельного VBA-модуля и внедрить его в документ. В дальнейшем эти шаблоны можно наполнить реальным кодом, открыв внедрённый модуль в редакторе макросов Microsoft Visual Basic (запускается из приложений Word, Excel, PowerPoint или Access по нажатию горячих клавиш Alt+F11).

Краткое описание:


Основные возможности RibbonXMLEditor:

  1. Быстрое построение xml-описания интерфейса ленты (ribbon), закулисья (backstage), команд (command), контекстных меню (contextMenus) и панели быстрого доступа (qat) путём нажатия на кнопки, соответствующие различным элементам интерфейса или путём вставки этих элементов из списка контекстно-чувствительного автодополнения.
  2. Импорт внешних изображений для значков элементов интерфейса.
  3. Внедрение интерфейса в документы Word, Excel, PowerPoint или Access.
  4. Импорт/экспорт xml-макета интерфейса в файл настроек ленты, поддерживаемый офисом начиная с 2010-й версии.
  5. Генерация на основе построенного xml-кода модуля ".bas" для VBA с шаблонами процедур обратного вызова и внедрение его в документ.

Редактор имеет много полезных функций, таких как:

  1. Контекстно-чувствительное автодополнение
  2. Всплывающие подсказки по коду
  3. Встроенная галерея офисных иконок, содержащая несколько тысяч изображений
  4. Автоформатирование кода
  5. Валидация кода
  6. Запуск документа в родном приложении не выходя из редактора с возможностью выбора версии офиса, если у вас установлено несколько версий одновременно.
  7. Система поиска, в том числе с помощью регулярных выражений
  8. Система быстрого поиска по идентификатору
  9. Фолдинг (сворачивание содержимого тегов)

Удобство работы с редактором обеспечивается следующими свойствами редактора:

Видеоурок по созданию своей кнопки на ленте:

Краткий видеообзор предыдущей версии 8:

Благодарности

Выражаю особую благодарность Евгению Маркову и Александру Витеру за их активное участие в тестировании программы, а также за многочисленные предложения по её улучшению. Также выражаю благодарность всем, кто своевременно сообщал мне о замеченных ошибках, а также оставлял пожелания по наращиванию функционала.

Рекомендую книжицу, правда не знаю, есть ли перевод

Title: RibbonX: Customizing the Office 2007 Ribbon
Authors: Robert Martin, Ken Puls, Teresa Henning (Oliver Stohr)
Publisher: Wiley
Year: 2007

Из личного опыта, поначалу было несколько серьёзных заморочек с Ribbon (как то слёт объекта IRibbonUI при возникновении любой ошибки и т.д.) Но все решается, и теперь для меня такой интерфейс более предпочтителен.

Небольшой пример, над чем я сейчас работаю (вложение).

Касательно взаимодействия с макросами, механизм колбэков на мой взгляд достаточно удобен, гибкая обратная связь (можно модифицировать интерфейс на лету практически в любом контексте). В сочетании с прозрачными формами, выглядит как-то даже свежо.

Единственно, в чём имею упрекнуть RibbonX, не доступен элемент галерея (как в Word, главная вкладка , стили). Впрочем, при желании, можно прикрутить от сторонних производителей.

Вместо круглой кнопки сделали backstage, который тоже можно полностью перепилить под себя.
Ну и в десятке можно стандартный интерфейс настраивать вручную (в 2007 только через xml). Кажется всё.

Кстати, по поводу заморочек с IRibbonUI, подробно здесь

В принципе, возможности офисной ленты весьма конечны, и практически полностью раскрыты в той самой книге. Так что все статьи/блоги, которые мне попадались по этой теме в сети ничего нового предлагали. Всё упирается только в фантазию.

Иконки находятся на двух дополнительных вкладках бэкстейджа.
Инструкция по употреблению - по той же ссылке

вот вы заморочились)
Чтож, есть решение и для такого случая

В конце этой статьи есть две ссылки для скачивания
- собственно галерея иконок (забанена местной гэбнёй)
- код-исходник который достаёт иконки

Алгоритм получения галереи с помощью кода-исходника следующий:

1.Строите проект (нужна visual studio, я пользуюсь ознакомительной 2010 Pro с официалного сайта MS) кода-исходника - в результате получите надстройку
2.Кладёте в отдельную папку файл Office2010IconsGallery.docx (выкладывал его ранее)
3.Достаёте(копируете) из него файл customUI14.xml (сохраните в этой же папке)
4.Открываете файл Office2010IconsGallery.docx (если вылезет ошибка "В результате вызова компонента COM. " - просто переоткройте файл, у меня со второго раза получилось)
5.В результате пункта 1, на вкладке Надстройки у вас появится элемент "Print ImageMSO To HTML" с кнопкой "Print"
6.Работает эта штука быстро, в результате появится папка Images c иконками в формате PNG в количестве 7344 штук
7. * * *
8.PROFIT.

Спасибо за статью. Видел похожие в виде макроса VBA, там качество терялось. Здесь же автор пишет, что прозрачность сохраняется.

devexpres - эт несколько другая тема. MS лицензируют ribbon интерфейс сторонним производителям. Между прочим, есть и бесплатные варианты, но и поддержка будет соответствующая.

Здравствуйте!
У меня проблема совсем простая, во всяком случае, с виду представляется простой.
Создаю XlaM, на этапе проектирования и разработки работаю с XlsM. Создал закладку. на ней несколько групп кнопок.
Ribbon создал по образцу, найденному в Сети.

Итак, моя проблема:
Я хочу, чтобы при нажатии на кнопку её размер менялся с большого Large на маленький Small, при повторном нажатии - наоборот.
Собственно, таких кнопок две-три-четыре. Нажатие на эти кнопки задаёт тип реакции для других кнопок Ribbon-ленты. Чтобы юзер видел, в каком режиме он находится, кнопки должны раздуваться/сжиматься.

При открытии файла - если это XlsM, или при запуске Excel"а, если это XlaM, срабатывает вот такой код:
[vba]

Const Large As Integer = 1
Const Small As Integer = 0

Select Case control.ID

Case "aButton01": Size = Large
Case "aButton02": Size = Small
Case "aButton03": Size = Small
.

[/vba]
Надо как-то заставить эту функцию сработать не только при открытии, а при каждом нажатия на некоторые кнопки.

В порядке уточнение - пусть с кнопками связаны некие функции:
[vba]

Case "aButton01": Application.Run "Ribbon_A_01"
Case "aButton02": Application.Run "Ribbon_A_02"
.

Вот эти функции:
[vba]

Правильно ли я понимаю, что надо как-то из функции Ribbon_A_01 вызвать функцию GetSize?
И если это правильно, то как это сделать?

PS Видимо, аргумент "control" это и есть кнопка aButton01.
Как же его задать, где получить ссылку на этот объект aButton01?

Должно быть что-то вроде:
[vba]

Здравствуйте!
У меня проблема совсем простая, во всяком случае, с виду представляется простой.
Создаю XlaM, на этапе проектирования и разработки работаю с XlsM. Создал закладку. на ней несколько групп кнопок.
Ribbon создал по образцу, найденному в Сети.

Итак, моя проблема:
Я хочу, чтобы при нажатии на кнопку её размер менялся с большого Large на маленький Small, при повторном нажатии - наоборот.
Собственно, таких кнопок две-три-четыре. Нажатие на эти кнопки задаёт тип реакции для других кнопок Ribbon-ленты. Чтобы юзер видел, в каком режиме он находится, кнопки должны раздуваться/сжиматься.

При открытии файла - если это XlsM, или при запуске Excel"а, если это XlaM, срабатывает вот такой код:
[vba]

Const Large As Integer = 1
Const Small As Integer = 0

Select Case control.ID

Case "aButton01": Size = Large
Case "aButton02": Size = Small
Case "aButton03": Size = Small
.

[/vba]
Надо как-то заставить эту функцию сработать не только при открытии, а при каждом нажатия на некоторые кнопки.

В порядке уточнение - пусть с кнопками связаны некие функции:
[vba]

Case "aButton01": Application.Run "Ribbon_A_01"
Case "aButton02": Application.Run "Ribbon_A_02"
.

Вот эти функции:
[vba]

Правильно ли я понимаю, что надо как-то из функции Ribbon_A_01 вызвать функцию GetSize?
И если это правильно, то как это сделать?

PS Видимо, аргумент "control" это и есть кнопка aButton01.
Как же его задать, где получить ссылку на этот объект aButton01?

Должно быть что-то вроде:
[vba]

Молния не ударяет в долины? Ещё как ударяет!

Итак, моя проблема:
Я хочу, чтобы при нажатии на кнопку её размер менялся с большого Large на маленький Small, при повторном нажатии - наоборот.
Собственно, таких кнопок две-три-четыре. Нажатие на эти кнопки задаёт тип реакции для других кнопок Ribbon-ленты. Чтобы юзер видел, в каком режиме он находится, кнопки должны раздуваться/сжиматься.

При открытии файла - если это XlsM, или при запуске Excel"а, если это XlaM, срабатывает вот такой код:
[vba]

Const Large As Integer = 1
Const Small As Integer = 0

Select Case control.ID

Case "aButton01": Size = Large
Case "aButton02": Size = Small
Case "aButton03": Size = Small
.

[/vba]
Надо как-то заставить эту функцию сработать не только при открытии, а при каждом нажатия на некоторые кнопки.

В порядке уточнение - пусть с кнопками связаны некие функции:
[vba]

Case "aButton01": Application.Run "Ribbon_A_01"
Case "aButton02": Application.Run "Ribbon_A_02"
.

Вот эти функции:
[vba]

Правильно ли я понимаю, что надо как-то из функции Ribbon_A_01 вызвать функцию GetSize?
И если это правильно, то как это сделать?

PS Видимо, аргумент "control" это и есть кнопка aButton01.
Как же его задать, где получить ссылку на этот объект aButton01?


Заметим также, что эта сборка успешно работает и с новыми версиями Excel, включая 2010 и 2013. Сборки более ранних версий не имеют возможности для создания Ribbon интерфейсов.
Ключевым элементов этой сборки является интерфейс IRibbonExtensibility, который собственно и позволяет создавать Ribbon элементы.

public class ComAddin : IDTExtensibility2 , IRibbonExtensibility

Единственным методом является GetCustomUI который возвращает строку, содержащую описание Ribbon интерфейса в виде XML. Excel, в свою очередь, при загрузке надстройки обновит Ribbon интерфейс на основе этого описания.
Visual Studio не располагает дизайнером для создания Ribbon интерфейсов (если речь не идет о VSTO), поэтому создадим описание элементов интерфейса вручную. Для этого добавим к проекту XML файл.


Для вновь созданного файла установим свойство Build Action в значение Resource.


После чего добавим к проекту файл ресурсов.


Откроем вновь созданные файл ресурсов и перетащим в открывшееся окно наш XML файл.


После всех этих манипуляций мы можем обратиться к XML файлу, расположенному в ресурсах и получить его содержимое в виде строки. Обновим метод GetCusomUI следующим образом.

Таким образом, метод возвращает строку, представляющую собой пользовательский интерфейс в виде XML. Осталось самое главное - описать элементы интерфейса.

< customUI xmlns = " http://schemas.microsoft.com/office/2006/01/customui " > < button id = " buttonLarge " size = " large " label = " Large Button " imageMso = " CustomActionsMenu " /> < menu id = " menuLarge " size = " large " label = " Large Menu " imageMso = " HappyFace " >

Элемент button, как понятно из названия, представляет собой кнопку. Атрибут size задает размер кнопки ("large" или "normal"). Атрибут label задает текст кнопки. Для установки изображения кнопки, в данном случае используется атрибут imageMso, которые указывает на одну из встроенных иконок. Для задания собственной иконки используется атрибуты image или getImage.

< button id = " buttonLarge " size = " large " label = " Large Button " imageMso = " CustomActionsMenu " />

Элемент box представляет собой группу элементов, расположенных вертикально или горизонтально. Способ расположения элементов указывается с помощь атрибута boxStyle. Элемент toggleButton представляет собой западающую кнопку, в то время как checkbox - это обычный флажок.

Элемент menu представляет собой кнопку с выпадающим меню. В данном случае меню состоит из 3-х элементов.

< menu id = " menuLarge " size = " large " label = " Large Menu " imageMso = " HappyFace " >

После регистрации обновленной надстройки, Excel добавит новую вкладку на панель.


Callback методы

Ribbon добавлен, однако обработка событий элементов управления не происходит. Для этого необходимо описать callback методы, т.е. методы класса, которые будут вызваны при возникновении того или иного события. < customUI xmlns = " http://schemas.microsoft.com/office/2006/01/customui " > < button id = " buttonLarge " size = " large " imageMso = " CustomActionsMenu " getLabel = " OnGetLabel " onAction = " OnLargeButtonClick " /> < button id = " buttonSmall " label = " Small button " onAction = " OnSmallButtonClick " /> < toggleButton id = " buttonToggle " label = " Toggle " onAction = " OnToggleClick " /> < checkBox id = " checkbox " label = " Checkbox " onAction = " OnCheckBoxClick " /> < menu id = " menuLarge " size = " large " label = " Large Menu " imageMso = " HappyFace " > < button id = " menuButton1 " label = " Menu Item 1 " onAction = " OnMenuButtonClick " /> < button id = " menuButton2 " label = " Menu Item 2 " onAction = " OnMenuButtonClick " /> < button id = " menuButton3 " label = " Menu Item 3 " onAction = " OnMenuButtonClick " />
  1. Идентификатор доступа должен быть public;
  2. Имя метода должно совпадать со значением, установленном в соответствующем атрибуте, включая регистр;
  3. Сигнатура метода должна соответствовать типу события.

void OnAction(IRibbonControl control)

Для элементов checkbox и togglebutton, сигнатура метода должна быть

Читайте также: