Comment on page
📜
Применение CommandBars в Visio 2010+
Продолжение статьи об эмуляции работы с интерфейсом приложения MS Visio.
В предыдущей статье перечислялись все способы запуска различных к оманд: программно и с помощью среды ShapeSheet. В этой статье подробно остановимся на применении коллекции CommandBars, так как применение объектов UIObject в настоящее время (2022 год) является очень архаичным т.к. в версиях с ленточным интерфейсом (2010+) это уже не работает.
Коллекция CommandBars появилась в Visio в версии 2002. Несмотря на то что коллекция создавалась для версии с классическим интерфейсом она работает и в наши дни.

Рисунок 1 - Интерфейс MS Visio 2003 (классический)
В предыдущей статье был приведен код и список команд коллекции CommandBars. На примере основной панели инструментов (Standard Toolbar) рассмотрим синтаксис программной эмуляции запуска команд с этой панели.

Рисунок 2 - Команды на панели инструментов Standard Toolbar
Данная панель инструментов имеет порядковый номер 39 (содержит 22 кнопки), команда Save на этой панели имеет порядковый номер 3.

Рисунок 3 - Фрагмент вывода команд коллекции CommandBars
Таким образом вызов программно команды сохранения документа будет выглядеть так:
Set cm = Application.CommandBars(39) ' Standard : (39) : "Стандартная панель"
cm.Controls(3).Execute ' Save : (3) : "Сохранить"
В некоторых случаях может не совпадать порядок следования команд в выводе полученном из MS Visio с ленточным интерфейсом с порядком следования кнопок на панели инструментов в классических версиях Visio.
В случае если кнопка на панели инструментов содержит выпадающий список команд, например выбрать из списка вариант форматирования линии Нет линии. То к порядковому номеру контролла на панели, добавляется еще порядковый номер контролла на выпадающем списке.
Set cm = Application.CommandBars(40) ' Format : (40) : "Форматирование"
cm.Controls(18).Controls(1).Execute ' NoLine : (18) : "Шаблон линии" : (1) : "&Нет линий"
Sub StartAddon()
Dim cm As CommandBar, cmc As CommandBarControl, cc As CommandBarControl, cb As CommandBarControl
Set cm = Application.CommandBars(116) ' : (116) : "Встроенные меню"
Set cmc = cm.Controls(20) ' : (20) : "&Надстройки"
Set cc = cmc.Controls(6) ' : (6) : "Дополнительные ре&шения Visio"
Set cb = cc.Controls(2) ' : (2) : "&Нумерация фигур..."
cb.Execute
End Sub
Last modified 5mo ago