Links
Comment on page
📜

Применение CommandBars в Visio 2010+

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

Синтаксис вызова команд CommandBars

В предыдущей статье был приведен код и список команд коллекции 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 HideRibbon()
Dim tbs As ToolbarSet, app As Application
Set app = Application
app.ShowToolbar = False ' Hide Toolbar
app.ToolbarStyle = -1 ' Change Toolbar style
End Sub
Сделать фигуру без линий и заливки

Код

Sub MakeNoLineNoFill()
Dim cm As CommandBar
Set cm = Application.CommandBars(40) ' : (40) : "Форматирование"
cm.Controls(18).Controls(1).Execute ' NoLine : (18) : "Шаблон линии" : (1) : "&Нет линий"
cm.Controls(17).Controls(2).Execute ' NoFill : (17) : "Цвет заливки" : (2) : "&Нет заливки"
End Sub
Управление настройкой внешнего вида окна Visio

Код

Sub ViewOptions()
Dim cm As CommandBar
Set cm = Application.CommandBars(45) ' : (45) : "Вид"
cm.Controls(1).Execute ' Ruler : (1) : "Линейки"
cm.Controls(2).Execute ' Grid : (2) : "Сетка"
End Sub
Вызов дополнительных окон

Код

Sub ShowWin()
Dim cm As CommandBar
Set cm = Application.CommandBars(45) ' : (45) : "Вид"
cm.Controls(11).Execute ' DEW : (11) : "Окно проводника по документам"
cm.Controls(13).Execute ' Layers : (13) : "Свойства слоя"
End Subvb
Изменение активного инструмента рисования

Код

Sub ChangeDrawingTools()
Dim cm As CommandBar
Set cm = Application.CommandBars(58) ' : (58) : "Рисование"
cm.Controls(1).Execute ' Rectangle : (1) : "Прямоугольник"
cm.Controls(3).Execute ' Line : (3) : "Линия"
End Sub
Запуск надстройки «Нумерация фигур»

Код

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