⚒️
MS Visio Automation Hints
  • 📖MS Visio VBA
  • 💡Объектная модель Visio
  • ⚠️Проблема с отображением кириллицы в VBA-редакторе
  • 💻Как изменить координаты фигуры программно
  • 📌Преобразование в абсолютные координаты страницы
  • 🕹️Эмуляция работы с интерфейсом приложения
  • 📜Применение CommandBars в Visio 2010+
Powered by GitBook
On this page
  • Синтаксис вызова команд CommandBars
  • Используемые ссылки
  • Примеры кода

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

Продолжение статьи об эмуляции работы с интерфейсом приложения MS Visio.

PreviousЭмуляция работы с интерфейсом приложения

Last updated 1 year ago

В предыдущей статье перечислялись все способы запуска различных команд: программно и с помощью среды 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

Более сложный случай описан в примере .

📜
Запуск надстройки «Нумерация фигур»
Application.BuiltInToolbars property (Visio)docsmsft
Logo
Application.BuiltInMenus property (Visio)docsmsft
Logo
VisUIObjSets enumeration (Visio)docsmsft
Logo
UIObject object (Visio)docsmsft
Logo
Рисунок 1 - Интерфейс MS Visio 2003 (классический)
Рисунок 2 - Команды на панели инструментов Standard Toolbar
Рисунок 3 - Фрагмент вывода команд коллекции CommandBars