переопределение библиотечных ссылок?

Нестер
Дата: 16.09.2005 02:12:38
Привет всем!

у меня проект ипользует обьекты в Reference Microsoft Excel 11.0 Object Library и Microsoft Word 11.0 Object Library

на машине у пользователя обои библиотеки 9.0

возникает ошибка....missing ссылок
проект MDE

как заменить 9 версию на 11 этих библиотек у пользователя
Темный
Дата: 16.09.2005 02:54:14
Поставить на его машине тот же офис, что и у разработчика :)
Но это неправильный подход, ИМХО
Allll
Дата: 16.09.2005 08:55:27
Или поставить у себя такой же офис, как и у пользователя :)

Или:
1. придти к пользоватлю с mdb
2. исправить ссылки на версии 9.0
3. создать mde
4. протестировать работу программы с новыми ссылками

Или:
Не использовать ссылки, а связь c Word'ом и Excel'ем делать через позднее связывание, не указывая версию приложения:
Dim objWord As Object

Set objWord = New Word.Application
Нестер
Дата: 16.09.2005 11:42:50
Allll
Или поставить у себя такой же офис, как и у пользователя :)

Или:
1. придти к пользоватлю с mdb
2. исправить ссылки на версии 9.0
3. создать mde
4. протестировать работу программы с новыми ссылками

Или:
Не использовать ссылки, а связь c Word'ом и Excel'ем делать через позднее связывание, не указывая версию приложения:
Dim objWord As Object

Set objWord = New Word.Application


у меня так и создается:

Dim app As Word.Application 'Приложение программы
Dim strDOC As String ' Имя документа
Dim strDOT As String ' Имя шаблона
Dim ctl As Control ' Управляющие элементы в форме
Dim s As String ' Вспомогательная строка

On Error GoTo 999
' Определяем имена шаблона и документа Word
With Application.CurrentProject
strDOT = .Path & "\" & "Бланк 2004.dot"
'strDOC = .Path & "\" & "doc3.doc"
End With

' Управление документом Word
Set app = New Word.Application


я делаю дитсрибутив установки в innosetup
поэтому заказчик должен всё поставить сам и соотвественно всё поставится само, вариант с установкой своей версии ,каку заказчика не катит
а потом они поменяют ещё на что нибудь или снесут винду - потом ставить будут (мне каждый раз к ним в еб....я ездить не хочется )
хотел сначала регестрировать новые библиотеки через innosetup - но во вкладе Reference он мне пишет что использует файлы для word 11.0 - MSWORD.OLB
для excel 11.0 - EXCEL.EXE, это не dll или Ocx поэтому ничего не получается через regsrv32

подскажите как в этом случае поступить, есть же выход всё таки
АлексейК
Дата: 16.09.2005 12:05:16
Dim objWord As Object
Set objWord = New Word.Application

у меня так и создается:

Dim app As Word.Application 'Приложение программы
Set app = New Word.Application

И где также?

зы песец это не только когда лиса по тундра бежит
Allll
Дата: 16.09.2005 12:57:23
При написании и отладке программы, конечно же удобнее использовать ссылки - видно свойства, методы. А при работе можно обойтись и поздним связыванием. Переключать можно через условную компиляцию:
#Const cnstDebugVersion = True  ' для работы = False

#If cnstDebugVersion Then   ' для отладки: включить ссылку на Word
   Dim objWord As Word.Application
#Else                       ' для работы: отключить ссылку на Word
   Dim objWord As Object
#End If
Недостаток этого метода - нужно немного исправить программу:
Например, для максимизации окна Word'а вы использовали константу
objWord.WindowState = wdWindowStateMaximize
при отключенной ссылке, VBA не знает значение этой константы и нужно исправить, например так:
' объявить свою константу
Private Const cnstwdWindowStateMaximize As Integer = 1

' заменить константу Word'а на свою
objWord.WindowState = cnstwdWindowStateMaximize
Как найти использованные константы? Отключить ссылку на Word и выполнить компиляцию проекта, будут показаны все не определённые константы Word'а. Заменить их на свои.
Нестер
Дата: 16.09.2005 14:42:40
Спасибо за подробный совет.
хотя конечно жаль, что нет возможности - просто библиотеки обновить до 11 версии
Ukraina
Дата: 16.09.2005 20:51:26
Я делаю так: узнаю пути ссылок на своем компе, тем самым узнаю имя конкретной библиотеки, копирую все необходимые библиотеки в папку где находиться твое приложение и все, т.к. Акцесс ищет ссылки по определенному алгоритму: сначала в папках регистрированных, потом в Виндовя, потом в Систем32, потом в корневом где расположен сам Акцесс, в заключении в текущей папке, где есть твое приложение....

Говорят, что можно в текущей папке, где есть твое приложение, создать новую папку типа LIB, скопировать туда все необходимые используемые библиотеки и в Референсе перессылить ссылки на библиотеки в эту папку...
При установке скопировать и папку LIB, в этом случае говорят, что акцесс будет использовать относительные ссылки, сам пока так не использовал...

Только вот боюсь, что возникнет проблема не ссылками а с версиями Ворда и Екселя...