Regasm не работает / компонент ActiveX не может создать объект - PullRequest
0 голосов
/ 25 марта 2020

Я написал C# .dll в Visual Studio, которую я хочу вызвать из Excel VBA. (Я использовал этот учебник)

В моей разработке P C, где я установил настройки в свойствах проекта для "Сделать COM-видимым", "Зарегистрироваться для взаимодействия COM" и " подписать сборку "все отлично работает. DLL регистрируется автоматически в Visual Studio, и я могу выбрать и установить ее в Excel в окне VBA> Инструменты> Ссылки

. Теперь используется тот случай, когда я могу использовать этот файл DLL на другом P C, который Visual Studio не установлена.

Как сказано в руководстве и по всему rnet, путь к go - это использование инструмента командной строки RegAsm.exe, что я и сделал (если это полезно : Я использовал один в следующей папке: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe)

Команда для регистрации DLL:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe D:\Debug\DotNetLibrary.dll /tlb /codebase.

Это выполняется без ошибки, и командная строка говорит мне, что типы были зарегистрированы правильно, и tlb был экспортирован и зарегистрирован.

Кажется, что все работало хорошо, и есть запись в реестре (Computer \ HKEY_CLASSES_ROOT \ TypeLib), которая ссылается на мою DLL, но библиотека не не отображается в окне Reference в VBA, как на другом P C.

Если я выберу tlb, который был сгенерирован RegAsm вручную, нажав кнопку обзора в Справочном окне, он будет добавлен в список. Но если я затем запускаю код, я получаю сообщение об ошибке, что компонент ActiveX не может создать объект.

Я проверяю эту проблему уже несколько дней, так что было бы очень хорошо, если бы кто-то мог помочь я с этим.

1 Ответ

0 голосов
/ 31 марта 2020

Как отметил @HansPassant в комментарии к моему вопросу, простым решением было использование 32-разрядной версии regasm (расположенной в C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319). сделано потому, что продукты Microsoft Office все еще 32-разрядные.

...