powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как сделать ссылки на библиотеки переносимыми с машины на машину?
11 сообщений из 11, страница 1 из 1
Как сделать ссылки на библиотеки переносимыми с машины на машину?
    #33995290
aka-Author
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, товарищи программисты,

помогите, пожалуйста, советом.

Я написал небольшую программу на VBA, которая должна работать в среде Microsoft Word. Программа (помимо всего прочего) использует ADO для обращения к базе данных в формате Microsoft Access, а также функции для работы со строками (а именно, Mid, проблемы с которой тут уже у кого-то возникали). Вроде бы программа правильно работает на разных версиях Windows и Office (хотя я протестировал еще далеко не все возможные комбинации), но каждый раз оказывается, что что она ссылается на отсутствующие версии библиотек. На одной машине есть ADO 2.8, на другой 2.6, на третьей 2.7; функция Mid живет еще в какой-то библиотеке, и опять оказывается, что на разных машинах разные версии. В результате я получаю на каждой новой машине ошибку компиляции, открываю проект, меняю reference с отсутствующей версии библиотеки на присутствующую, после этого все начинает работать.

Чего хочется: чтобы при наличии Windows от 2000 и Office от 2000 программа работала сразу и не требовала перенастройки reference'ов.

Вопрос: можно ли этого добиться, и, если да, то как именно?

-- Может быть есть какие-то версии библиотек, которые присутствуют заведомо? Например, версию ADO 2.0 я вижу везде. Может быть ссылаться на нее? Чем она хуже 2.6, 2.7 или 2.8?

-- Может быть нужно dll-файлы используемых библиотек поставлять вместе с программой (сейчас она физически представляет собой комплект из вордовского шаблона и аксессовской базы данных)?

-- Может быть есть еще какой-то выход из положения, который мне в голову неприходит?

Предполагается, что программа будет иметь хождение внутри крупной организации. Настраивать ее лично на машине у каждого пользователя я не смогу, да это никто и не будет приветствовать.

Заранее спасибо.
...
Рейтинг: 0 / 0
Как сделать ссылки на библиотеки переносимыми с машины на машину?
    #33995345
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aka-AuthorВопрос: можно ли этого добиться, и, если да, то как именно?Выкинь VBA, напиши на VB.

aka-Author-- Может быть есть какие-то версии библиотек, которые присутствуют заведомо? Например, версию ADO 2.0 я вижу везде. Может быть ссылаться на нее? Чем она хуже 2.6, 2.7 или 2.8?Наличием багов и отсутствием фич. В приниципе, можно принудительно ограничится 2.0 которая идет вместе с W2K (или Office2000? не проверял) будет жить и работать, но возможны глюки которые были исправлены в более поздних версиях.

aka-Author-- Может быть нужно dll-файлы используемых библиотек поставлять вместе с программой (сейчас она физически представляет собой комплект из вордовского шаблона и аксессовской базы данных)?Возможно, но это потребует инсталляции всех использованых AciveX библиотек. Если сейчас достаточно скопировать шаблон и базу, то потом прийдется использовать инсталлятор.

aka-Author-- Может быть есть еще какой-то выход из положения, который мне в голову неприходит?1) Выкинуть VBA, переписать все на VB.
2) Перенести весь код из Ворда в Акцесс и забыть про ADO
...
Рейтинг: 0 / 0
Как сделать ссылки на библиотеки переносимыми с машины на машину?
    #33995447
Дмит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, для начала просто используй познее связывание.
...
Рейтинг: 0 / 0
Как сделать ссылки на библиотеки переносимыми с машины на машину?
    #33995475
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДмитЯ думаю, для начала просто используй познее связывание.Расскажи мне глупому, как делается позднее связывание ActiveX библиотек и VBA в Word?
...
Рейтинг: 0 / 0
Как сделать ссылки на библиотеки переносимыми с машины на машину?
    #33995535
aka-Author
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо вам за советы. Не знаю, в какой степени я смогу ими воспользоваться сейчас, потому что времени у меня уже остается совсем не много. Надо написать документацию, заделать всякие дыры и сдаваться.

Но, во всяком случае, запомню на будущее. Я смотрю, не весело все с VBA.
...
Рейтинг: 0 / 0
Как сделать ссылки на библиотеки переносимыми с машины на машину?
    #33995725
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl ДмитЯ думаю, для начала просто используй познее связывание.Расскажи мне глупому, как делается позднее связывание ActiveX библиотек и VBA в Word?

Dim obj As Object ' Variant
Set obj = CreateObject("ADODB.Recordset")
...
Рейтинг: 0 / 0
Как сделать ссылки на библиотеки переносимыми с машины на машину?
    #33995750
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl ДмитЯ думаю, для начала просто используй познее связывание.Расскажи мне глупому, как делается позднее связывание ActiveX библиотек и VBA в Word?

Цитата из книги Джона Уокенбаха

авторПоздняя привязка ■
На этапе выполнения можно использовать или функцию CreateObject для создания объекта, или функцию GetObject для получения сохраненного объекта. Такие обьекты объявляются как объекты универсального типа Object. Ссылка на обьекты задается на этапе выполнения.
Позднюю привязку можно применить даже тогда, когда неизвестна версия библиотеки объектов, установленной в операционной системе. Например, следующий код который управляет Word 97 и более поздними версиями, создает объект Word:
Dim WordApp As Object
Set WordApp = CreateObject("Word.Application")
Если в системе установлено несколько версий Word, то можно создать обьект определенной версии. Приведенный ниже оператор управляет объектом Word 2000:
Set WordApp = CreateObject {"Word. Application.9").
...
Рейтинг: 0 / 0
Как сделать ссылки на библиотеки переносимыми с машины на машину?
    #33998026
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
э-кхм.... да, действительно. Протормозил.
...
Рейтинг: 0 / 0
Как сделать ссылки на библиотеки переносимыми с машины на машину?
    #33998311
aka-Author
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про позднее связывание хороший совет. Спасибо!

И "тормозной" вопрос тоже был очень кстати, потому что он привел к появлению полного ответа на мой вопрос.

Может быть вы еще сможете дать совет вот на какую тему. Когда я открываю диалоговое окно с References, там по умолчанию к проекту подключено несколько библиотек. Как мне узнать, какие из них действительно нужны, а какие можно спокойно отключить? Или можно вообще об этом не беспокоиться, потому что при отсутствии явных обращений к ним ссылки на них ни на что не повлияют? Или повлияют? Например, какой-нибудь библиотеки не окажется на машине, а из-за этого "отвалится" что-нибудь действительно нужное. В одном из соседних топиков человек жаловался, что у него отвалилась функция Mid. Ему отвечали, что, возможно, это из-за отсутствия какой-нибудь "ненужной" библиотеки, на которую в проекте стояла ссылка.
...
Рейтинг: 0 / 0
Как сделать ссылки на библиотеки переносимыми с машины на машину?
    #33998328
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aka-AuthorКак мне узнать, какие из них действительно нужны, а какие можно спокойно отключить?Методом научного тыка.
Отключить и попробовать запустить. Если упадет с сообщением что не найден объект или не объявлена функция - значит эта библиотека нужна. Все работает и не падает - библиотека не нужна.

aka-AuthorИли можно вообще об этом не беспокоиться, потому что при отсутствии явных обращений к ним ссылки на них ни на что не повлияют? Или повлияют? Например, какой-нибудь библиотеки не окажется на машине, а из-за этого "отвалится" что-нибудь действительно нужное. В одном из соседних топиков человек жаловался, что у него отвалилась функция Mid. Ему отвечали, что, возможно, это из-за отсутствия какой-нибудь "ненужной" библиотеки, на которую в проекте стояла ссылка.Да, беспокоится нужно. Ссылка на отстутвующую библиотеку, даже если ничего из нее не используется может привести к очень странным глюкам типа упомянутого. Микрософты делают удобный, но не устойчивый софт, увы.
...
Рейтинг: 0 / 0
Как сделать ссылки на библиотеки переносимыми с машины на машину?
    #33998598
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aka-AuthorПро позднее связывание хороший совет. Спасибо!

это плохой совет. Раннее связывание - эффективней и с ним приятней работать

вы все равно должны иметь компоненты, правильно зарегистрированные на машине при любом "связывании" - так почему не сделать установщик нужных компонентов самому? ADO,например, ставите клиенту последней версии и живете спокойно с ссылками на 2.8.

Про "Mid" - это вы напридумали и это не проблема. Юзайте полный синтаксис ВашКласс.ВашаФункция- типа vba.Strings.Mid (для VBA этого не нужна - ссылка на VBA имеет приоритет)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как сделать ссылки на библиотеки переносимыми с машины на машину?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]