Дано: есть зарегистрированная при помощи 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 """"