Я написал 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 не может создать объект.
Я проверяю эту проблему уже несколько дней, так что было бы очень хорошо, если бы кто-то мог помочь я с этим.