gpt4 book ai didi

Excel DNA 和 RTD 服务器 COM 可见性

转载 作者:行者123 更新时间:2023-12-04 21:29:55 27 4
gpt4 key购买 nike

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

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

为什么要实现 RTD? COM 可见吗?

最佳答案

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

  • 无需注册,并且有一个内部调用 XlCall.RTD(...) 的包装器 UDF,或者,
  • 通过注册类型(通过调用 ExcelDna.ComInterop.ComServer.DllRegisterServer()),然后直接调用 =RTD(...) 函数。

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

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

所以您是对的,对于大多数 Excel-DNA 样本来说,实际上并不需要它。

这些年来,一切都变得有点困惑......

关于Excel DNA 和 RTD 服务器 COM 可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56194196/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com