2016-04-05 18 views
1

ComfyJを使用してJavaで実装されたCOMサーバーがあります。これは、基本的にCoRegisterClassObjectを使用してカスタムインターフェイスを登録します。私は、サーバーにアクセスするためにボンネットの下にCoGetClassObjectを使用して想定しVBAで未登録のCOMコンポーネントにアクセスするにはどうすればよいですか?

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(); 

:私は、次のJavaコードを使用してアクセスすることができます。

これを実行すると、レジストリを変更せずに、サーバーの実行可能ファイルにメタデータを追加せずに、COMサーバーにアクセスできます。

VBAからこのサーバーにアクセスする方法はありますか? VBAからCoGetClassObjectに電話できますか?

+0

ClsCtx.LOCAL_SERVERの価値とは? @FlorentB。 –

+0

ClsCtx.LOCAL_SERVERの値は4です(https://msdn.microsoft.com/de-de/library/windows/desktop/ms693716%28v=vs.85%29.aspxを参照してください) –

+0

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

答えて

1

clsidでCOMコンポーネントのインスタンスを作成するには、CreateObjectを使用できます。 この例では「ADODB.Recordsetの」の新しいインスタンスを作成します。

Set obj = CreateObject("new:{00000535-0000-0010-8000-00AA006D2EA4}") 
関連する問題