Я нашел способ вызова кода .NET 2 напрямую из макроса VBA:
Dim clr As mscoree.CorRuntimeHost
Set clr = New mscoree.CorRuntimeHost
clr.Start
Dim domain As mscorlib.AppDomain
clr.GetDefaultDomain domain
Dim myInstanceOfDotNetClass As Object
Set myInstanceOfDotNetClass = domain.CreateInstanceFrom("SomeDotNetAssembly.dll", "Namespace.Typename").Unwrap
Call myInstanceOfDotNetClass.ExecuteSomeDotNetMethod
(Чтобы этот код работал, мне нужно было добавить ссылки на mscoree.tlb и mscorlib.tlb в Excel VBA с помощью Tools → References.. в Excel)
Но это работает только для сборок .NET CLR 2, вплоть до .NET Framework версии 3.5.
Теперь мне нужно заставить его работать с .NET 4.
Я понял, что .NET CLR4 представил другой, независимый от версии, способ создания экземпляра среды выполнения, и я также нашел довольно простой пример кода, написанный в C++: http://dev.widemeadows.de/2014/02/04/hosting-the-net-4-runtime-in-a-native-process/
Но моих навыков работы с Excel VBA недостаточно, чтобы перевести эти несколько строк кода в работающий макрос VBA. Кто-нибудь может мне помочь, пожалуйста?