Дано: есть зарегистрированная при помощи RegAsm C# dll, которая содержит класс
Namespace1.Class1, видимая в VBA References как
Namespace1.
Класс
Class1 из dll инстанциируется в VBA как
Public XXX As New Class1. Функции класса успешно вызываются из VBA, но для исполнения некоторых из них требуется до 30 секунд.
Надо: запустить длительные функции в фоновом режиме через исполнение внешнего VBScript, как это сделано
здесь и обновлять прогресс бар каждую секунду.
Проблема в VBScript при попытке получить доступ к находящемуся в памяти объекту:
Set YYY = GetObject(, "Namespace1.Class1") не находит dll/Namespace/Class в памяти (800A01AD: "ActiveX component can’t create object"). Безуспешно перепробовал различные комбинации ("Class1", "Namespace1", "Namespace1_Class1") – вылезает та же ошибка.
Дополнительные сведения: 32 bit dll успешно вызывалась из VBA (Excel 64 bit) при помощи COM Surrogate.
VBScript запускается из VBA посредством:
Set wsh = VBA.CreateObject("WScript.Shell")
wsh.Run """" & filename """"