All Forums
 Категория Visio
 Форум Вопросы и ответы
 Как подключить макрос к меню?
Author Previous Topic Topic Next Topic  

ovz

Russia
2 Posts

Posted - 06/06/2007 :  16:23:41
Проблема такая.

В Visio была написана куча макросов. Встала проблема запуска этих макросов командами меню (или кнопками тулбара). Оказалось, что в отличии от Excel или Word задача эта нетривилальная.

Насколько я понял необходимо создать на основе этих макросов add-in или add-on. Может есть более простой способ? Если нет, то как превратить мои макросы в этот вид зверей?

Желательно получить ответ развернутый по шагам.

Tumanov

Russia
1198 Posts

Posted - 06/06/2007 :  20:34:22
1. Add-On создавать не обязательно. Макросы и можно запускать примерно так же, как и Add-On.
Поищите в форуме, в каком-то топике был текст "Привязка макроса к тулбару".
Так вот, там в свойство
.OnAction = "ThisDocument.ttt"
записывался как раз макрос, а не Add-On.
2. Однако, с непривычки больше проблем может возникнуть не с макросами, а с тулбаром.
Может в таком случае повесить макросы на выпадающее меню страницы? Это попроще будет.
Действия такие: открывается шейп-лист страницы, создается секция Ations, в ячейку "Menu" прописывается пункт меню, в ячейку "Action" вызов типа =RUNADDON("ThisDocument.ttt") (Это вызывается макрос ttt).
Тогда к меню, которое выскакивает по правой кнопке на пустом месте в странице, добавится пункт, при щелчке по которому будет вызываться макрос. Строк в секции "Actions" может быть много.
3. Если все-таки придется переводить макросы в Add-On, то основное различие - в доступе к объектной модели. Для макросов объект Application уже есть всегда, готовенький, а для Add-On еще нужно получить ссылку на Visio и только потом раскручивать дерево до нужного объекта.
Ссылки на Visio и документ в данном случае поступят в виде аргументов командной строки, примерно таких
/visio=instanceHandle /doc=docIndex /page=pagIndex
Разбор командной строки лучше всего посмотреть в примере Add-On из SDK Visio.
Go to Top of Page

ovz

Russia
2 Posts

Posted - 06/13/2007 :  19:48:29
Спасибо Геннадий.

Действительно через OnAction макросы можно подключать, т.е. стнадартные команднды офиса в VBA работают так же как и в любом другом офисном приложении.
Вопрос, конечно, почему разработчики не реализовали этот механизм стандартными интерфейсными методами, как в других приложениях, но это остается на их совести.

Короче вопрос решен. Спасибо огромное.
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)