Продолжение статьи об эмуляции работы с интерфейсом приложения MS Visio.
В предыдущей статье перечислялись все способы запуска различных команд: программно и с помощью среды ShapeSheet. В этой статье подробно остановимся на применении коллекции CommandBars, так как применение объектов UIObject в настоящее время (2022 год) является очень архаичным т.к. в версиях с ленточным интерфейсом (2010+) это уже не работает.
Коллекция CommandBars появилась в Visio в версии 2002. Несмотря на то что коллекция создавалась для версии с классическим интерфейсом она работает и в наши дни.
Синтаксис вызова команд CommandBars
В предыдущей статье был приведен код и список команд коллекции CommandBars. На примере основной панели инструментов (Standard Toolbar) рассмотрим синтаксис программной эмуляции запуска команд с этой панели.
Данная панель инструментов имеет порядковый номер 39 (содержит 22 кнопки), команда Save на этой панели имеет порядковый номер 3.
Таким образом вызов программно команды сохранения документа будет выглядеть так:
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