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

Leo

Belarus
4 Posts

Posted - 08/17/2004 :  15:31:56
1.Как сделать доступ к макросу для всех документов не открывая того документа где он был создан?
2.Как переделать макрос в Add-In и сделать его видимым в меню Visio 2003?


Заранее благодарю,
Leo

Tumanov

Russia
1198 Posts

Posted - 08/17/2004 :  16:14:36
1. Текст макроса находится в документе и добраться к нему, не открывая документа, в общем случае нельзя. Его надо переделывать в Add-In или Add-On.
2. Переделать макрос в Add-In автоматически нельзя. Add-In и Add-On - это внешние программы, которые пишутся чаще всего в VB6. Они чуть-чуть сложнее оформляются и используют немного другие соглашения для доступа к документу Visio.
Простейший способ написать Add-In - скачать Visio SDK. Там есть прототипы и для Add-In и для Add-On (да и еще много чего полезного). При установке SDK они цепляются к Visual Studio. А уж из них легко сделать свою программу.
Отличия от макроса в тексте программы будут очень небольшие, но будут.
2а. Add-In не запускается через Tools меню. То есть видимым его не сделаешь. Чтобы сделать видимым Add-On, нужно просто положить его в папку Solutions Visio 2002. У Visio 2003 такой папки вроде нет, но можно положить в любую папку и прописать путь к ней в настройках.

Примечание:
Add-In - программа, выполняющаяся в среде Visio. Работает быстрее, но в случае неисправности может обрушить Visio.
Add-On - программа, выполняющаяся отдельным процессом. Поэтому работает помедленнее, но и Visio не ломает.
Еще есть отличия в способах запуска и обработке событий.
Go to Top of Page

immortal

Russia
391 Posts

Posted - 08/18/2004 :  05:45:58  Visit immortal's Homepage
quote:
Как переделать макрос в Add-In
так-же как в ехе, конечно переделывается не макрос весь, а отдельные команды
определяем переменную визио для всего модуля (допустим формы)
Public vis As Object
далее допустим в Private Sub Form_Load() определяем ссылку на объект
Set vis = GetObject(, "Visio.Application")

если при обрашении к объекту визио в VBA: ActiveDocument.Pages.Count
то в нашем случае добавляем в начало vis. и получим vis.ActiveDocument.Pages.Count

quote:
сделать его видимым в меню Visio 2003
в адд-ин можно сделать меню и панели инструментов, на моей хомепаге есть адд-ин, можно посмотреть как пример(там панелька и меню tools-ks master), с VB идет шаблон для создания адд-инов но он кривой, поэтому надо скачать с сайта мелкомягких. лучше использовать адд-он но я пока не знаю как нормально запустить его, единственный известный мне способ =hyperlink("c:\myaddon.exe"), но в этом случае придется жмакать 3 раза на кнопку ок
Go to Top of Page

immortal

Russia
391 Posts

Posted - 08/18/2004 :  09:41:55  Visit immortal's Homepage
вот некоторые трудности, которые возникают при разработке адд-ин:
невозможность тестирования без полной компиляции
невозможность сохранения(компиляции) без отключенного в визио адд-ина (или закрытого визио)
необходимость определять все переменные с помощью dim
незнаю как делать иконки на кнопках (пока не разбирался, руки не дошли)
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)