0

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

[ComVisible(true)]
public class CustomUI : IRibbonExtensibility

......

public void SaveAs(IRibbonControl control);

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

4

2 回答 2

1

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

在 VB6 代码中处理 VB.NET 事件

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

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

确保您注册 DLLregasm "path to dll" /codebase /tlb如果您不注册 TLB,我认为 VBA 将无法找到该对象。

从 VBScriptset myobj = CreateObject("FULLREFERENCE.CLASSNAME")开始,您需要进行试验,直到获得确切的名称。

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

于 2012-06-06T01:28:44.337 回答
0
Dim var As Office.IRibbonControl
Set var = New Office.IRibbonControl

将创建一个 IRibbonControl 对象

你可能想看看:http ://www.xtremevbtalk.com/showthread.php?t=265636&highlight=iribboncontrol

于 2012-06-06T20:08:34.437 回答