Excel VBA — создаем свою панель инструментов

  • Tutorial
Если перед вам стоит задача по автоматизации чего-нибудь в excel, то забудьте про макросы, расположенные непосредственно в книге, создавайте панель инструментов (ribbon), которая

  1. не зависит от конкретного файла
  2. располагается в основной панели инструментов
  3. дает кастомизируемый UI

image

Для того что бы создать такую панель вам потребуется

1) файл excel с расширением xlam, расположенный в %userprofile%\appdata\roaming\microsoft\addins

2) редактор xml ресурса (для разметки кнопок)

image

3) определить кнопки по примеру

button id="b_MemberSelect" label="Member Select"    onAction="p_MemberSelect" imageMso="ReturnToTaskList"  size="large" 

где p_MemberSelect это процедура VBA

4) в иницилазации процедуры (в файле xlam) нужно передавать предопределенные параметры
Sub p_MemberSelect(ByVal vIRibbonControl As IRibbonControl)

Но у данного решения есть одно ограничение — нет возможности создавать формы, встроенные в панели Excel, например:

image

Этот пример из проекта In2Sql (плагин для Excel, который визуализирует объекты SQL). В этом плагине код создан с помощью c# и библиотек VSTO.

Похожие публикации

Средняя зарплата в IT

120 000 ₽/мес.
Средняя зарплата по всем IT-специализациям на основании 5 953 анкет, за 1-ое пол. 2021 года Узнать свою зарплату
Реклама
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее

Комментарии 3

    +1
    Из редакторов рекомендую RibbonXMLEditor — крайне удобная олдскульная вещь.
    novikov.gq/products/ribbonxmleditor/ribbonxmleditor.html

    Нормально сделанная «своя» панель экономит массу времени. В современном экселе к сожалению, нельзя по-человечески кастомизировать панели инструментов, как в старом, а многие часто используемые функции раскиданы по разным вкладкам. Собрать это воедино затратно по времени, но в итоге экономит гораздо больше.
      +1
      Вот еще хороший ресурс по XML для лент:
      fluentui.blogspot.com
        +1

        RibbonXMLEditor 3.4 уже имела валидатор структуры и список imageMso* иконок.


        Есть проблема при скрытии программно объекта box с параметром boxStyle="vertical". Приходится к вложенным объектам в box применять метод getVisible.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое