Доброго времени суток!
Есть отчетная система у приложения.
Отчеты в Excel
Для работы отчета используется проект VBA Excel.
приложение создает Excel Application, грузит нужный файл .xls и вызывает метод "Построить"
для пого, чтобы построить отчет необходимы некоторые dll подключаемые в проект по референсам.
Все хорошо до тех пор, пока в какой-то длл не меняется интерфейс( хотя и не нарушается бинарная совместимость, но соответственно меняется версия TypeLibrary)
(вопрос о том, что интерфейс менять нельзя, не принимается, поскольку приложение развивается и заморозить интерфейсы пока не представляется возможным)
VBA Ecxel() хранит в файле .xls GUID путь и ВЕРСИЮ typelibrary
естественно он не находит старой версии(очевидно проверяет версию, прежде чем получить объект из Dll)
и выдает сообщение "Object Library feature not supported"
ах, да, используется Office XP....
Вопрос конечно решается тем, что перед вызовом "Построить" залезть в коллескию VBE Referenses и проверить и перецепить ссылки. Просто и наверняка.
Но, прийдется давать доверительный доступ к проекту Visual Basic, а заказчик категорически против понижения уровня безопасности
Конечно можно объявлять объектные переменные AS Object, это должно спасти, но отчетов разработано великое множество, кроме того заказчик имеет возможность сам разрабатывать отчеты и остро стает вопрос о затратах времени на переделывание всей отчетной системы.
Вобщем вопрос стоит так:
Возможно ли сказать VBA чтобы он не контролировал версию?
А хранил просто ссылку на dll
(там система разберется с совместимостью, поскольку бинарная совместимость не нарушается)
Или хотя бы посоветуйте где почитать о контроле версий ссылочных длл в VBA