从VBA调用第三方公共ComVisible .Net方法

时间:2012-06-06 00:06:33

标签: .net com

我需要从第三方.Net程序集中调用一个方法。我想要的对象是公共的,并用ComVisible属性标记。我想要的方法是公开的,但需要一个IRibbonControl。所以:

[ComVisible(true)]
public class CustomUI : IRibbonExtensibility

.. ..

public void SaveAs(IRibbonControl control);

这可能是通过VBA中的CreateObject实现的吗?我需要在VBA中创建一个IRibbonControl,对吗?

2 个答案:

答案 0 :(得分:1)

我知道这并没有直接回答你的问题,但是如果你使用DispIds设置你的界面并正确地重新计算它,你应该“能够”在VBA中使用它。我通常使用机器上的VBScript测试来测试我的COM Exposed对象。

Handling VB.NET events in VB6 code

显然这是VB.NET代码,但属性等只是C#的略有不同的格式。 (如果您需要更多帮助,请告诉我)

你能在注册表中正确看到对象注册(搜索对dll的引用或查找它的类名)。

确保您使用regasm "path to dll" /codebase /tlb注册DLL如果您没有注册TLB,我认为VBA将无法找到该对象。

从VBScript尝试set myobj = CreateObject("FULLREFERENCE.CLASSNAME"),您需要进行试验,直到您拥有确切的名称。

然后在您的VBA代码中,根据您的注册方式添加对tlb / dll的引用。

答案 1 :(得分:0)

Dim var As Office.IRibbonControl
Set var = New Office.IRibbonControl

将创建一个IRibbonControl对象

您可能希望看到:http://www.xtremevbtalk.com/showthread.php?t=265636&highlight=iribboncontrol