我需要从第三方.Net程序集中调用一个方法。我想要的对象是公共的,并用ComVisible属性进行了标记。我想要的方法是公共的,但需要一个IRibbonControl。所以:
[ComVisible(true)]
public class CustomUI : IRibbonExtensibility。。。。
public void SaveAs(IRibbonControl control);例如,通过VBA中的CreateObject,这是可能的吗?我需要在VBA中创建一个IRibbonControl,对吗?
发布于 2012-06-06 09:28:44
我知道这不能直接回答你的问题,但是如果你用DispIds设置你的接口并正确地重新使用它,你“应该”能够在VBA中使用它。我通常在机器上使用VBScript测试来测试COM公开的对象。
Handling VB.NET events in VB6 code
显然,这是VB.NET代码,但属性等只是C#的一种略微不同的格式。(如果你需要更多的帮助,请告诉我)
您是否可以在注册表中正确地看到对象注册(搜索对dll的引用或查找其类名)。
确保你用regasm "path to dll" /codebase /tlb注册了动态链接库。如果你不注册TLB,我想VBA将无法找到对象。
从VBScript尝试set myobj = CreateObject("FULLREFERENCE.CLASSNAME"),您将需要进行实验,直到您有了确切的名称。
然后在您的VBA代码中,根据注册方式向tlb/dll添加一个引用。
发布于 2012-06-07 04:08:34
Dim var As Office.IRibbonControl
Set var = New Office.IRibbonControl将创建一个IRibbonControl对象
你可能想看看:http://www.xtremevbtalk.com/showthread.php?t=265636&highlight=iribboncontrol
https://stackoverflow.com/questions/10906667
复制相似问题