Author |
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. |
|
|
ovz
Russia
2 Posts |
Posted - 06/13/2007 : 19:48:29
|
Спасибо Геннадий.
Действительно через OnAction макросы можно подключать, т.е. стнадартные команднды офиса в VBA работают так же как и в любом другом офисном приложении. Вопрос, конечно, почему разработчики не реализовали этот механизм стандартными интерфейсными методами, как в других приложениях, но это остается на их совести.
Короче вопрос решен. Спасибо огромное. |
|
|
|
Topic |
|
|
|