Ошибка создания экземпляра класса после преобразования из VB6 DLL в VB6 ActiveX EXE - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть DLL-библиотека VB6, которая отлично работала в течение многих лет, и много версий.Он используется из надстройки Excel.

Чтобы сделать его совместимым с 64-битным Excel, я хочу преобразовать его в VB6 ActiveX EXE.Я так и сделал, но теперь, когда я пытаюсь создать экземпляр из клиента (та же версия Excel; 2016), я получаю сообщение об ошибке.Это ошибка, которую возвращает клиент:

Automation error

The specified module could not be found.

Насколько я понимаю, EXE-файл ActiveX должен был быть автоматически зарегистрирован при компиляции, но я также попытался зарегистрировать его, дважды щелкнув по нему, чтобы запустить его, итакже вручную регистрируя его в regserver.Но я все еще получаю ту же ошибку.

В клиенте, вот строка, которую я запускаю, чтобы создать экземпляр VB6 ActiveX EXE;это то же самое, что и то, как он успешно создавал его, когда он был DLL-библиотекой VB6:

Dim abc As Object

Set abc = CreateObject("ABC.cls_abc")

Для Instancing модуля класса задано значение MultiUse, а для Persistable - NotPersistable.

Iискал regedit для ABC.exe, и это было там.

Есть предложения?

ОБНОВЛЕНИЕ:

Я попытался изменить имя проекта ActiveX EXE и имя класса, и это сработало.

Я изменил имя проекта с ABC на ABC64 и изменил имя класса с cls_abc на cls_abc64.

Затем из Excel я создал его следующим образом:

Set abc = CreateObject ("ABC64.cls_abc64")

Я попытался изменить его обратно на ABC и cls_abc и изменитьэто обратно в ActiveX DLL.Я удалил DLL, поэтому скомпилировал ее снова.Затем я попытался создать экземпляр из Excel с помощью Set abc = CreateObject ("ABC.cls_abc"), и это сработало нормально.

Таким образом, проект работает как ActiveX EXE, если я изменяю имя проекта и имя класса, и он работает как ActiveX DLL со старым именем проекта и именем класса, но не работает как ActiveX EXE сстарое имя проекта и имя класса (я не проверял изменение только одного или другого).Это говорит о том, что у меня проблема в реестре?

...