Java 如何在VBA中访问未注册的COM组件?

Java 如何在VBA中访问未注册的COM组件?,java,vba,com,Java,Vba,Com,我使用Java实现了一个COM服务器,它基本上使用CoRegisterClassObject注册了一个自定义接口。我可以使用以下Java代码访问它: OleMessageLoop.invokeAndWait(new Runnable() { public void run() { IUnknown unknown = new IUnknownImpl( COMServerSample.COMServer.CLSID, Cls

我使用Java实现了一个COM服务器,它基本上使用
CoRegisterClassObject
注册了一个自定义接口。我可以使用以下Java代码访问它:

OleMessageLoop.invokeAndWait(new Runnable() {
    public void run() {
        IUnknown unknown = new IUnknownImpl(
            COMServerSample.COMServer.CLSID,
            ClsCtx.LOCAL_SERVER);
        Automation automation = new Automation(unknown);
        automation.invoke("method2", new Object[] {new Integer(123) });
    }
});
OleMessageLoop.stop();
我假设它在引擎盖下使用
CoGetClassObject
访问服务器

这样,我就可以访问COM服务器,而无需更改注册表,也无需向服务器可执行文件添加任何元数据


有没有办法从VBA访问此服务器?我可以从VBA调用
CoGetClassObject
吗?

要通过clsid创建COM组件的实例,可以使用CreateObject。 此示例创建“ADODB.Recordset”的新实例:


ClsCtx.LOCAL_SERVER的价值是多少?@FlorentB。ClsCtx.LOCAL_SERVER的值是4(请参阅),您是否尝试过类似Set obj=CreateObject(“new:{00000535-0000-0010-8000-00AA006D2EA4}”)@FlorentB。这就是答案,非常感谢!请把它作为答案贴出来,这样我就可以接受了。
Set obj = CreateObject("new:{00000535-0000-0010-8000-00AA006D2EA4}")