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

时间:2016-04-05 09:19:19

标签: java vba com

我有一个使用ComfyJ在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吗?

1 个答案:

答案 0 :(得分:1)

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

Set obj = CreateObject("new:{00000535-0000-0010-8000-00AA006D2EA4}")