All Forums
 Категория Visio
 Форум Вопросы и ответы
 SaveAsWeb проблема хелп плз.
Previous Page
Author Previous Topic Topic Next Topic

Mihail

Russia
10 Posts

Posted - 08/18/2004 :  17:48:46
код работает спасибо.. скачал SDK для 2002 Visio там кое что есть.
но т.к. ни разу не сталкивался не могу ни как сделать отдельный модуль из этого кода. Как придумать, что бы можно было, для любого документа визио, потом делать так
application.addons("SaveasWeb").Run "/quiet=True /target=path\test.htm"



Go to Top of Page

immortal

Russia
391 Posts

Posted - 08/19/2004 :  06:05:33  Visit immortal's Homepage
quote:
не могу ни как сделать отдельный модуль из этого кода. Как придумать, что бы можно было, для любого документа визио, потом делать так
значит так!
устанавливаешь визуал бейсик 6
запускаешь его, сразу выходит окно, где выбираешь создание нового проекта: Standart EXE
Имеем чистую форму
кликаем дважды на форме, открывается окно с кодом формы и сразу создаст обработку события, в данном случае загрузка формы: Form_Load
вставляем следующий код вне событий, в начале кода формы:
Public vis As Object 'определяем переменную визио для всего модуля, далее значение этой переменной будет во всех модулях формы

далее в
Private Sub Form_Load()
Set vis = GetObject(, "Visio.Application") 'определяем ссылку на объект визио
'ну и любые операции с документом визио, в нашем случае

vis.application.addons("SaveasWeb").Run "/quiet=True /target=path\test.htm" ' учтите, если документ не открыт произойдет ошибка
End Sub

для открытия документа:
vis.Application.document.openex "путь к документу", visopenrw
только не знаю работает ли при закрытом визио, по идее должно

для поиска файлов воспользуйся функцией dir
после отладки вставь обработку ошибок
on error resume next

для закрытия формы:
unload form1
если это поставить в функцию Form_Load то после всех операций она выгрузится сама
если будет использоваться только эта функция, то Public vis As Object можно определить в нутри неё dim vis As Object

в данном случае любой код в VBA переделывается в VB добавлением в начале vis, соответственно если вы назовете эту переменную по другому, то и тут она измениться, как пример работы с внешним приложением можно взять для екселя, ворда или другого компанента офиса, в экселе GetObject(, "Excel.Application") а в визио будет GetObject(, "Visio.Application"), удачи


сохраняем ехе проект и усе

Edited by - immortal on 08/19/2004 06:08:29
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 08/19/2004 :  15:52:09
Хочется внести некоторые уточнения...

Форма, как я понимаю, здесь совершенно не нужна - сойдет и консольное приложение.
Visio нет смысла держать все время открытым, достаточно открывать, когда нужно.
Лучше открывать его вообще в невидимом режиме - чего зря экраном трясти...
Остальное я написал чуть раньше, чем увидел последний ответ, но корректировать не буду - пусть будет второй вариант :)

Маленькая тонкость - объект VisSaveAsWeb может использоваться только in-process. Это значит - из макроса Visio или Add-In. Вам же, как я понял, нужно работать из внешней программы. В этом случае лучше пользоваться готовым Add-On, поставляемым и автоматически устанавливающимся с Visio и работающим в режиме командной строки.
Общая схема такая: Нужно запустить .exe (Вашу программу) - программа откроет документ Visio и использует в нем метод Run имеющегося в коллекции Visio аддона SaveAsWeb с передачей ему нужных параметров командной строки. Потом закроет документ Visio и сама завершится.

Программа создается в VB6 (например, в Visual Studio).
Я делал консольное приложение вот с таким кодом:

Sub Main()

Dim appVisio As Visio.Application
Dim docsObj As Visio.Documents
Dim docObj As Visio.Document
Dim pagsObj As Visio.Pages

Set appVisio = CreateObject("Visio.InvisibleApp")
Set docsObj = appVisio.Documents
Set docObj = docsObj.Add("C:\temp\Drawing1.vsd")
Set pagsObj = appVisio.ActiveDocument.Pages
appVisio.Addons("SaveAsWeb").Run "/quiet=True /target=C:\temp\Drawing1.htm"
appVisio.Quit

End Sub

pagsObj здесь не нужен, но понадобится, если Нужно будет узнать количество страниц в документе.
Visio открывается в невидимом режиме.
Программа сохраняет рисунок Drawing1.vsd в виде Drawing1.htm
В References проекта должна присутствовать ссылка на Visio (у меня это Microsoft Visio 2002 Type Library).
Выполняется Make, получается .exe, его можно положить в любую папку и запускать, когда надо вручную или каким-то скриптом.

Естественно, все это можно сделать и не в VB6, а в другой среде.
Go to Top of Page

Mihail

Russia
10 Posts

Posted - 08/20/2004 :  10:15:26
... да , все очень здорово ..
я тут пол дня обновлял свою win2k.. обалдеть скока ей надо было.. поставил все ж таки VS.net версия VB 7 пишет .. не знаю хорошо это или нет . .но дугои у меня не нашлось только VS98 есть еще но ее не ставил.
и тут читая ваши ответы заметил что мне наверное не совсем то нужно сделать то..
был код который sab saveasweb() заработал у меня.
так вот мне нужно сначала следать этот код ADD-ON-ом как то, а сие у меня ни как не получается пока.
а параметры этому адону я могу и напрямую из Lotus передавать
appVisio.Addons("SaveAsWeb").Run "/quiet=True /target=C:\temp\Drawing1.htm". и exe другои какои то для чего мне не поиму пока .
подскажите плз как сделать мне Add-on с методом SaveAsWeb или этот Add-on где то есть уже .. и я просто не вкуриваю чего то..
Сенькс. Михаил.

Edited by - Mihail on 08/20/2004 10:17:54
Go to Top of Page

Mihail

Russia
10 Posts

Posted - 08/20/2004 :  10:53:34
Ребяты ! огромный пардон .. я супер тормоз, такую тему тут накрутил
столько сам тут навозился vs.net и т.п. .. а оказывается все так..
я сеичас просто в лотусе поставил строку в коде (догадался так и )
appVisio.Addons("SaveAsWeb").Run ("/quiet=True /openbrowser =False /target=C:\temp\test.htm")
и у меня, весь документ, как вы думаете .. благополучно сохранился как веб страница .. все просто супер ..спасибо огромное, что помогли разобраться..

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