VB (A) Ошибка, когда COM-DLL пытается создать экземпляр объекта NET-DLL - PullRequest
1 голос
/ 27 марта 2012

Вот мой вызов ...

EXCEL-VBA открывает COM-DLL, которая - в одном месте - ссылается на класс из другой NET-DLL.Когда COM-DLL пытается инициализировать объект из класса (в NET-DLL), я получаю сообщение об ошибке, что метод get_ContentTypeProperties не имеет реализации.

сообщение об ошибке «метод [...] не имеет реализации» .

Я никогда не создавал метод get_ContentTypeProperties, и при этом он не является частью интерфейса, который я использую.

При обращении к COM-DLL через другую DLL, чтобы обойти EXCEL-VBA, онработает правильно.Любые идеи?

ОБНОВЛЕНИЕ : Использование другого класса из NET-Dll, который реализует _Worksheet Interface (не _Workbook Interface, как в исходной задаче), выдает то же сообщение об ошибке, но по крайней мере яобнаружил, что «не реализованный» метод (PrintOutEx) является частью интерфейса рабочего листа из пространства имен Microsoft.Office.Tools.Excel.Этот интерфейс используется Visual Studio, с помощью которой я создаю свои библиотеки DLL.Но все же ... моя NET-DLL реализует интерфейс _Worksheet-интерфейса в пространстве имен Microsoft.Office.Interop.Excel. Почему в интерфейсе сообщается, что отсутствует метод, который я не реализую?

ОБНОВЛЕНИЕ :
1.) Согласно результатам Process Monitor Я вижу, что соответствующая DLL адресована, и что нет никакой Помехи Версии DLL, загруженной в GAC, например,
2.) Я - на всякий случай - заставил Excel сослаться на .NET-Framework 2.xxx, на котором основаны все задействованные библиотеки DLL ... одна и та же ошибка: (

1 Ответ

0 голосов
/ 11 мая 2012

Проблема в MS-интерфейсах, которые я использую. Я вырезал реализацию интерфейса, и она работает. Кажется, что интерфейсы несовместимы.

Используя, например, Интерфейс _Worksheet, основанный на библиотеке объектов Microsoft Excel 11.0 (Microsoft.Office.Interop.Excel из Office 2003), вызывает ошибку времени выполнения в Office 2007 или 2010, поскольку интерфейсы изменены. В моем случае отсутствует метод. И ошибка возникает, даже если реализующие классы не инициализированы, потому что реализация членов интерфейса является обязательной.

Я не уверен, когда происходит проверка, все ли элементы интерфейса реализованы. Кажется, это тот момент, когда вводится -интерфейс, содержащий пространство имен.

...