Тема: Помогите с поздним связыванием библиотеки.
Делаю в Excel программу для связывания с автокадом. Задавал вопрос на форуме для офиса, но все упирается в объектную модель автокада.
Собственно сама проблема:
В Excel VBA через TOOLS - REFERENCES подключаю дополнительные библиотеки. В зависимости от того, какая версия автокада стоит у пользователя, необходимо программно подключить соответствующую библиотеку.
Например, acax16enu.tlb или acax17enu.tlb.
2 библиотеки от разных версий одновременно подключить не получается - выдает ошибку "Name conflicts with existing module, project, or object library".
Из-за этого приходится использовать позднее связывание.
Делаю так.
Public ACADApp As Object ... Sub ЗагрузкаПриложенияAcad2005() Set ACADApp = CreateObject("AutoCAD.Application.16") ... End Sub Sub ОбработкаТекущегоЛистаACAD(i As Integer) ' Здесь мне нужно перебрать все элементы в пространстве листов. ' определяю переменную Dim elem As AutoCAD.AcadEntity For Each elem In ACADApp.ActiveDocument.PaperSpace ... Next elem End Sub
Ошибка вылезает на строке
Dim elem As AutoCAD.AcadEntity
пишет User-defined type not defined
Также не помогает замена AutoCAD.AcadEntity на ACADApp.AcadEntity и на ACADApp.Application.AcadEntity.
При раннем связывании (через TOOLS-PREFERENCES) такой ошибки не возникает и все работает как надо.
Пытаюсь определить переменную elem
Dim elem As Object Set elem = ACADApp.AcadEntity
Ругается на elem: Object doesn't support this property or method (Error 438)
Через
Set elem = New ACADApp.AcadEntity
тоже ничего хорошего не происходит.
Т.е. elem надо определять как-то по-другому.
Не откажите в помощи!