我需要从第三方.Net程序集中调用一个方法。我想要的对象是公共的,并用ComVisible属性标记。我想要的方法是公开的,但需要一个IRibbonControl。所以:
[ComVisible(true)]
public class CustomUI : IRibbonExtensibility
.. ..
public void SaveAs(IRibbonControl control);
这可能是通过VBA中的CreateObject实现的吗?我需要在VBA中创建一个IRibbonControl,对吗?
答案 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