excel RTD函数实际例子及语法

  一、RTD函数语法

  RTD(ProgID,server,topic1,[topic2],...)

  函数功能:全部显示全部隐藏从支持 COM 自动化 (COM 加载项:通过添加自定义命令和指定的功能来扩展 Microsoft Office 程序的功能的补充程序。COM 加载项可在一个或多个 Office 程序中运行。COM 加载项使用文件扩展名 .dll 或 .exe。)的程序中检索实时数据。

  参数说明

  ProgID 已安装在本地计算机上、经过注册的 COM 自动化加载宏 (加载项:为 Microsoft Office 提供自定义命令或自定义功能的补充程序。)的 ProgID 名称,该名称用引号引起来。

  server 运行加载宏的服务器的名称。如果没有服务器,程序是在本地计算机上运行,那么该参数为空白。否则,用引号 ("") 将服务器的名称引起来。如果在 Visual Basic for Applications (VBA) (Visual Basic for Applications (VBA):Microsoft Visual Basic 的宏语言版本,用于编写基于 Microsoft Windows 的应用程序,内置于多个 Microsoft 程序中。) 中使用 RTD,则必须用双重引号将服务器名称引起来,或对其赋予 VBA NullString 属性,即使该服务器在本地计算机上运行。

  topic1, topic2,... 为 1 到 253 个参数,这些参数放在一起代表一个唯一的实时数据。

  必须在本地计算机上创建并注册 RTD COM 自动化加载宏。如果未安装实时数据服务器,则在试图使用 RTD 函数时将在单元格中出现一则错误消息。如果服务器继续更新结果,那么与其他函数不同,RTD 公式将在 Microsoft Excel 处于自动计算模式下进行更改。

  二、RTD函数实际例子

  =parseArrayData(RTD("ExcelRTD.RTDFunctions",,"AAA"))

  =RTD("MyComAddIn.Progid",,"LOREM_IPSUM","Price")

  在Excel 中使用RTD非常简单,Excel 提供了一个新的工作表函数 RTD,此函数允许通过调用组件对象模型 (COM) 自动化服务器来实现实时数据检索。RTD 工作表函数使用以下语法:

  "=RTD(ProgID, Server, String 1, String 2, ... String n)"

  第一个变量 ProgID 表示Real-Time Data 服务器(RTD Server)的编程标识符 (ProgID)。Server 变量指示运行RTD Server的计算机的名称;如果RTD Server在本地运行,则可以将此变量设置为空字符串或将其忽略。其他变量只表示发送到RTD Server的参数;这些参数的每个唯一组合都表示一个“主题”(topic),每个“主题”有一个关联的“主题 ID”(topic id)。这些参数区分大小写。例如,以下内容演示将生成三个不同主题ID的RTD Server调用:

  =RTD("ExcelRTD.RTDFunctions",,"AAA", "10")

  =RTD("ExcelRTD.RTDFunctions",,"AAA", "5")

  =RTD("ExcelRTD.RTDFunctions",,"aaa", "5")

  要使用 Excel 的 RTD 函数,必须注册一个实现 IRTDServer 接口的COM组件。实现这个接口的COM组件就是所谓的RTD Server。IRTDServer具有以下成员:

  ServerStart(CallbackObject)

  CallbackObject 是一个IRTDUpdateEvent类型的参数,它有一个UpdateNotify方法,用于通知Excel有更新的数据可用(push)。这样Excel就会通过调用RefreshData方法来刷新所有的主题(pull)。当 Excel 请求RTD Server的第一个 RTD 主题时调用ServerStart方法,该方法会在成功时返回 1,并在失败时返回负值或 0。这个方法在随后应用其他RTD函数时不会再次被调用。

  ConnectData(TopicID, Strings, GetNewValues)

  其中,TopcID 唯一标识这个函数在Excel中的一个应用,即使复制多份到不同的单元格,对于Excel来讲,也只是对应一个主题。这个 topicID 由Excel返回,我们需要将其记录下来,以便为其提供更新的数据。Strings 是一个System.Array,用于接收RTD函数传入的参数(String 1...String n),这是一个引用类型的参数。GetNewValues 用于确定是否总是获取最新数据,如果这个参数传入true,则每次保存Excel文档以后,再次重新打开时,看到的不一定是上次保存时的数据,而是最新的实时数据,这也是一个引用类型的参数。

  每当一个新的主题(Topic)被应用到Excel,ConnectData都会被调用。在这里,需要保存传入的新的TopicID和查询参数以供之后更新数据使用。为此,需要定义好自己的数据结构。

  DisconnectData(TopicID)

  与ConnectData一样,TopcID 唯一标识这个函数在Excel中的一个应用。当我们从Excel中移除一个主题(删除所有采用相同参数的RTD函数)之后,DisconnectData将被调用,在这里,可以释放对这个主题的监控,并不再为其获取新数据。

  Heartbeat

  确定RTD Server是不是依然可用,0和负数代表不可用,1代表可用。Excel会调用此方法确定服务是否断连。

  RefreshData(TopicCount)

  TopicCount表示要更新的主题数量,这是一个引用类型的参数,用于返回给Excel。我们可以定义一个时钟,用于定时向数据源获取数据,这样,在时钟的Elapsed事件中,获取最新数据,并调用xlRTDUpdate成员的UpdateNotify方法以通知Excel,新的数据准备完毕。这样Excel就会调用RefreshData方法,来对工作簿中的数据进行更新。

  ServerTerminate

  当Excel不再需要从RTD Server获取实时数据时被调用。在这里,可以执行一些清理,例如清除缓存,关闭时钟等等。至此,一个RTD Server的生命周期就结束了。

时间: 2025-01-30 16:11:43

excel RTD函数实际例子及语法的相关文章

浅谈Excel开发(五) Excel的RTD函数

相关文章: 浅谈Excel开发(1) Excel开发概述 浅谈Excel开发(二) Excel 菜单系统 浅谈Excel开发(三) Excel 对象模型 上文介绍了Excel中的UDF函数,本文介绍一下同样重要的RTD函数.从Excel 2002开始,Excel引入了 一种新的查看和更新实时数据的机制,即real-time data简称RTD函数,他是一种Push-Pull的方式,及在 需要更新数据的时候,RTD给Excel Push一个消息说要更新数据,Excel在收到消息后主动拉取Pull新

Excel 2013函数早知道

Office 2013客户预览版(Customer Preview)已正式发布,新版本的 Office在很多方面都有了新的变化.其中Excel 2013新增了50多个新函数,从今 天开始,我将对其中的一些新增函数陆续进行介绍并附上应用实例.这个系列的 名称就叫做"Excel 2013函数早知道",希望通过这个系列能让你先人一步尽快 掌握新版Excel的函数新特性,在使用时更加得心应手. 1,FORMULATEXT 类型:查询引用类 功能:返回单元格内的公 式文本 语法:FORMULAT

excel减法运算函数使用方法

excel表格我们常常会用来制作报表,统计等,而在这过程中运算是必然的,怎么才能快速的进行计算呢,本文就为大家介绍excel中的减法函数及运算方法. 第一,excel减法函数介绍 关于excel减法函数,有一个内置函数:IMSUB 函数.这个函数就是excel减法函数. 它的语法是:IMSUB(inumber1, inumber2) 其中参数:Inumber1:必需.被减(复)数.Inumber2:必需.减(复)数. 如下图所示:数字1减去数字2,C2单元格公式为:=IMSUB(A2,B2),确

excel减法函数的使用

  第一.excel减法函数介绍 关于excel减法函数,有一个内置函数:IMSUB 函数.这个函数就是excel减法函数. 它的语法是:IMSUB(inumber1, inumber2) 其中参数:Inumber1:必需.被减(复)数.Inumber2:必需.减(复)数. 如下图所示:数字1减去数字2,C2单元格公式为:=IMSUB(A2,B2),确定,再次选中C2单元格,鼠标对准单元格右下角,当出现一个黑色小十字时,同时按住鼠标左键往下拖动填充,即可复制公式. 其实在这个地方,只是作为一个知

Excel 工程函数

本篇关于介绍Excel 工程函数 1.BESSELI 用途:返回修正Bessel函数值,它与用纯虚数参数运算时的Bessel 函数值相等. 语法:BESSELI(x,n) 参数:X为参数值.N为函数的阶数.如果 n 非整数,则截尾取整. 2.BESSELJ 用途:返回 Bessel 函数值. 语法:BESSELJ(x,n) 参数:同上 3.BESSELK 用途:返回修正Bessel函数值,它与用纯虚数参数运算时的Bessel 函数值相等. 语法:BESSELK(x,n) 参数:同上 4.BESS

Excel财务函数

本篇介绍Excel财务函数 1.ACCRINT 用途:返回定期付息有价证券的应计利息. 语法:ACCRINT(issue,first_interest, settlement,rate,par,frequency, basis) 参数:Issue为有价证券的发行日,First_interest是证券的起息日,Settlement是证券的成交日(即发行日之后证券卖给购买者的日期),Rate为有价证券的年息票利率,Par为有价证券的票面价值(如果省略par,函数 ACCRINT将par看作$1000

Excel常用函数扫盲实用说明_办公自动化

  1. 逻辑判断 逻辑判断所用的函数不多,IF.AND.OR三个就足以应付日常工作了. IF函数可以用来转换值,如将1和0转换为OK和NG: =IF(A1=1,"OK","NG") 与AND和OR组合使用可以判断多个条件,如判断是否是周末: =IF(OR(WEEKDAY(A1)=0, WEEKDAY(A1)=6),"周末","工作日") 2. 统计数量的COUNT.COUNTA.COUNTIF COUNT和COUNTA统计对

浅谈Excel开发(四) Excel自定义函数

相关文章: 浅谈Excel开发(1) Excel开发概述 浅谈Excel开发(二) Excel 菜单系统 浅谈Excel开发(三) Excel 对象模型 我们知道,Excel中有很多内置的函数,比如求和,求平均,字符串操作函数,金融函数等等.在有些 时候,结合业务要求,这些函数可能不能满足我们的需求,比如我想要一个函数能够从WebService上获取 某只股票的最新价:我想要一个函数能够获取当前的天气情况,这些需求我们可以通过编写Excel自定义 函数(User Define Function

EXCEL常用函数介绍(3)

15.ISERROR函数 函数名称:ISERROR 主要功能:用于测试函数式返回的数值是否有错.如果有错,该函数返回TRUE,反之返回FALSE. 使用格式:ISERROR(value) 参数说明:Value表示需要测试的值或表达式. 应用举例:输入公式:=ISERROR(A35/B35),确认以后,如果 B35单元格为空或"0",则A35/B35出现错误,此时前述函数返回TRUE结果,反之返回FALSE . 特别提醒:此函数通常与IF函数配套使用,如果将上述公式修改为:=IF(ISE