Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 20:30

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Как полностью заменить весь код в файле ?
СообщениеДобавлено: 20 ноя 2009, 01:25 
Не в сети
Постоянный участник

Зарегистрирован: 07 сен 2009, 00:09
Сообщений: 62
Очков репутации: 20

Добавить очки репутацииУменьшить очки репутации
Предположим есть несколько файлов. один из них самый последний, актуальный. внутри каждого файла программные модули с макросами. поскольку макросы дорабатывались постоянно - в старых файлах устаревшие версии кода. Ручками открывать каждый файл и менять содержимое модуля способ плохой - мож есть лучше варианты ? и как впредь поступать чтобы такой ситуации не возникло ?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как полностью заменить весь код в файле ?
СообщениеДобавлено: 20 ноя 2009, 19:31 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
А вот попробуйте что-нибудь в таком духе:
Код:
Public Sub ProcessOne_01(Doc As Visio.Document)
    'Обработка очередного документа
    'Работает при установке в Visio опции Tools / Macros / Security / Trust access to Visual Basic Project
    'После использования опцию желательно снять
    '===================================================
    ' В проекте заменяются три модуля: cProvod, Forvard, DBTolls
    Dim Proj As VBProject
    Set Proj = Visio.Application.Vbe.VBProjects(2)
    For i = 1 To Proj.VBComponents.Count
        'Debug.Print Proj.VBComponents(i).Name
        If StrComp(Proj.VBComponents(i).Name, "cProvod") = 0 Then
            Proj.VBComponents.Remove Proj.VBComponents(i)
            Proj.VBComponents.Import ("cProvod.cls")
            Debug.Print "Заменен модуль cProvod"
        End If
        If StrComp(Proj.VBComponents(i).Name, "Forvard") = 0 Then
            Proj.VBComponents.Remove Proj.VBComponents(i)
            Proj.VBComponents.Import ("Forvard.bas")
            Debug.Print "Заменен модуль Forvard"
        End If


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как полностью заменить весь код в файле ?
СообщениеДобавлено: 08 дек 2009, 22:39 
Не в сети
Постоянный участник

Зарегистрирован: 07 сен 2009, 00:09
Сообщений: 62
Очков репутации: 20

Добавить очки репутацииУменьшить очки репутации
пробую. только чтобы получить файл визио для замены нужно его открыть. а вот с открытием проблемы.
docObjRet = Application.Documents.Open(path_fam & "\исходная_схема_полная_links.vsd")
появляет окно обновления связей - а это сек. 20 (( как забороть ?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как полностью заменить весь код в файле ?
СообщениеДобавлено: 08 дек 2009, 22:46 
Не в сети
Постоянный участник

Зарегистрирован: 07 сен 2009, 00:09
Сообщений: 62
Очков репутации: 20

Добавить очки репутацииУменьшить очки репутации
ничего не выходит (( где в предложенном примере имя исходного образцового файла и где имя файла в котором меняются модули ?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как полностью заменить весь код в файле ?
СообщениеДобавлено: 09 дек 2009, 00:07 
Не в сети
Постоянный участник

Зарегистрирован: 07 сен 2009, 00:09
Сообщений: 62
Очков репутации: 20

Добавить очки репутацииУменьшить очки репутации
а вопрос архи нужный... (( если не разберусь -сильно погорю по времени ((


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как полностью заменить весь код в файле ?
СообщениеДобавлено: 09 дек 2009, 07:58 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Модули надо предварительно экспортировать в файлы. В примере это cProvod.cls, Forvard.bas.
А потом программно в нужном VBA проекте удалить модули и импортировать вот эти сохраненные.
Выбор VBA проекта:
Код:
Dim Proj As VBProject
Set Proj = Visio.Application.Vbe.VBProjects(2)
(В данном случае он второй)
Удаление старого модуля:
If StrComp(Proj.VBComponents(i).Name, "cProvod") = 0 Then
Proj.VBComponents.Remove Proj.VBComponents(i)
Подстановка нового:
Proj.VBComponents.Import ("cProvod.cls")


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как полностью заменить весь код в файле ?
СообщениеДобавлено: 09 дек 2009, 14:09 
Не в сети
Постоянный участник

Зарегистрирован: 07 сен 2009, 00:09
Сообщений: 62
Очков репутации: 20

Добавить очки репутацииУменьшить очки репутации
так можно ли задавить обновление линков при открытии файла ?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как полностью заменить весь код в файле ?
СообщениеДобавлено: 10 дек 2009, 03:55 
Не в сети
Постоянный участник

Зарегистрирован: 07 сен 2009, 00:09
Сообщений: 62
Очков репутации: 20

Добавить очки репутацииУменьшить очки репутации
получилось :D
http://bit.pirit.info/forum/viewtopic.php?t=12355
остался правда ряд проблем. одна из них :
2. oDoc.Close false почему то в визио не работает. а просто oDoc.Close выдает диалог сохранения при закрытии. как побороть ?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как полностью заменить весь код в файле ?
СообщениеДобавлено: 11 дек 2009, 08:38 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
В Visio диалог отключается отдельным свойством документа. Перед закрытием.
Код:
oDoc.AlertResponse(lpi2Ret)

lpi2Ret можно установить в IDOK, IDCANCEL, IDABORT, IDRETRY, IDIGNORE, IDYES и IDNO. (1-7)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB