Это мой файл проекта: < /p>
Код: Выделить всё
net8.0-windows
enable
enable
true
true
all
runtime; build; native; contentfiles; analyzers; buildtransitive
true
MyTest
Код: Выделить всё
MyTest.COM.dll
MyTest.COM.tlb
MyTest.COM.comhost.dll
MyTest.COM.X.manifest
[plus a few others I don't thing are relevant]
< /code>
У меня есть следующий простой тестовый объект, который я пытаюсь использовать: < /p>
[assembly: ComVisible(true)]
[assembly: ClassInterface(ClassInterfaceType.None)]
namespace MyTest.COM
{
[Guid("c99bc767-9def-4f24-8e6c-dc89496f90d8")]
public class COMDebug : ICOMDebug
{
public int Add(int x, int y) => x + y;
}
[Guid("ac1bd331-2979-4ad3-ae29-d839d2d9d64c")]
public interface ICOMDebug
{
int Add(int x, int y);
}
}
< /code>
Я нашел несколько мест, которые приводят примеры того, как использовать Regfree com из VBA. Этот ответ конкретно гласит, что он возможен и дает псудо-пример. Вот мой неработающий код VBA, работающий от Excel: < /p>
Sub Test()
Dim ctx
Dim dbg
Dim r As Integer
Set ctx = CreateObject("Microsoft.Windows.ActCtx")
ctx.Manifest = "C:\Path\To\Files\MyTest.COM.X.manifest"
Set dbg = ctx.CreateObject("MyTest.COM.COMDebug")
r = dbg.Add(2, 2)
MsgBox b
End Sub
< /code>
Выражение ctx.createObject ("mytest.com.comdebug") < /code> Ошибка: < /p>
Ошибка времени выполнения '-2147221231 (80040111). Class < /p>
< /blockquote>
Мое исследование не смогло выяснить много полезной информации по этой проблеме. Я подтвердил, что PROGID
Подробнее здесь: https://stackoverflow.com/questions/796 ... sted-class