Excel DNA和RTD服务器COM可见性

时间:2019-05-17 22:15:48

标签: excel excel-dna

在每个Excel DNA RTD样本中,RTD服务器impl。标记为COM可见。示例:https://github.com/Excel-DNA/Samples/blob/master/RtdClocks/RtdClock-ExcelRtdServer/RtdClockServer.cs

根据我将Excel DNA插件添加到Excel时的测试,不需要COM可见性。

产生RTD的原因是什么。 COM可见吗?

1 个答案:

答案 0 :(得分:2)

从Excel中使用基于Excel-DNA的RTD服务器有两种方法:

  • 没有注册,并且包装UDF内部调用XlCall.RTD(...)
  • 通过注册类型(调用ExcelDna.ComInterop.ComServer.DllRegisterServer()),然后直接调用=RTD(...)函数。

对于通常的第一种情况,您是对的,RTD服务器不需要ComVisible-Excel-DNA在内部进行连接并公开类而无需注册。对于第二种情况,必须将ComVisible(显式或通过在类型或程序集上没有使用ComVisible指令-因为ComVisible的默认值为'true')才能将类型注册为COM。导出。

如果您尝试使用包装器功能,那么这个故事会有些复杂,但是要在Excel中注册一个稳定的ProgId,以便在重新打开保存的工作表时可以使用“旧值”。在这种情况下,您需要注册COM并更改包装程序以调用XlCall.Excel(XlCall.xlfRtd, ...)

因此,对于大多数Excel-DNA样本来说,实际上并不需要它。

多年来,这一切都令人困惑...