在每个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可见吗?
答案 0 :(得分:2)
从Excel中使用基于Excel-DNA的RTD服务器有两种方法:
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样本来说,实际上并不需要它。
多年来,这一切都令人困惑...