模仿bdh功能填写

时间:2014-07-07 19:19:06

标签: excel vba excel-vba bloomberg

当在Excel中的Bloomberg BDH函数中输入查询时,它会自动使用所请求的数据填充选定的单元格和下面的单元格。

我正在尝试创建一个类似的功能(尽管有不同的数据源)。 BDH函数如何规避用户定义的函数中修改其他单元格填充查询数据时的典型限制?

1 个答案:

答案 0 :(得分:2)

您需要分两个阶段完成:

  1. 您的函数调用另一个进程来计算值,并仅返回要返回的数组的第一个元素(可能是" #NA#NA"或者日期或价格等。

  2. 被调用的进程可以在单独的RTD服务器(查看实时数据服务器)或通过DDE链接到电子表格的单独进程中运行。 (Bloomberg将DDE用于某些功能,RTD用于其他功能,我认为)

  3. 这样当您调用函数时,会立即返回第一个值(即答案,或#34; #NA请求数据......"然后当RTD服务器获取所需的值时数据,此函数的答案会更改为左上角的数组元素,其余的单元格将通过DDE / RTD填充。

  4. 在Microsoft的知识库中可以找到设置RTD服务器的简单示例。此外,许多使用DDE的例子(使用Excel进行金融数据交换的旧版,但非常流行的技术,即使在今天)也可以通过谷歌搜索获得。

    可以使用C#或VB.net Interop构建简单的填充应用程序(再次搜索示例)。

    希望这有帮助。

    编辑:您还可以使用VBA完美地完成此操作,方法是使用OnTime功能的一些巧妙组合(请参阅http://www.cpearson.com/excel/OnTime.aspx)并将其与来自单独电子表格的DDE结合使用(查找Tushar Mehta DDE时钟,一个非常古老的例子,但有些事情永远不会改变!)