📜Применение CommandBars в Visio 2010+
Продолжение статьи об эмуляции работы с интерфейсом приложения 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) : "&Нет линий"
Более сложный случай описан в примере Запуск надстройки «Нумерация фигур».
Используемые ссылки
Примеры кода
Last updated