【问题标题】:Excel: Dynamic Data Exchange API issue with formula executionExcel:公式执行的动态数据交换 API 问题
【发布时间】:2020-12-10 20:33:21
【问题描述】:

不确定这是否是提出这个问题的正确论坛,如果这对 SO 来说太具体(即财务-y),对不起。我以前没有使用过 excel-DDE,我在网上找不到任何与我的问题相似的东西。

我正在使用 TradeBase MX 从交易所获取实时报价。 TBMX 有一个 excel-DDE api 来获取例如通过=@TBMX|QUOTE!US0378331005.xtr.bid 在 xetra 上的苹果报价。我想根据另一个单元格中的 ISIN US0378331005 自动生成这个公式。问题是我可以通过=CONCATENATE("=@TBMX|QUOTE!", A1,".xtr.bid")生成上述公式,如果单元格A1包含ISIN,但excel不会执行公式,即它不会在单元格中显示投标报价。它只会将=@TBMX|QUOTE!US0378331005.xtr.bid 显示为单元格中的文本。我尝试通过

定义一个用于评估的VBA函数
Public Function eval(s As String) As Variant
    eval = Evaluate(s)
End Function

=eval(CONCATENATE("=@TBMX|QUOTE!", A1,".xtr.bid")) 也无法正常工作。这种方法只会在计算时更新一次报价,并且只有当我在另一个单元格中硬编码=@TBMX|QUOTE!US0378331005.xtr.bid 时,即如果 DDE 数据已经被 excel 调用。不确定如何使用公式获得所需的功能。我希望excel在单元格中生成公式后执行DDE-resquest。

这是否只能通过 VBA 宏实现,该宏生成公式并通过 .formula = "=@TBMX|QUOTE!US0378331005.xtr.bid" 分配它?很抱歉,由于我使用的特定软件 TBMX,我的问题缺乏可重复性,但我不知道在这里尝试什么,因为我对 DDE 请求的幕后情况了解不够。

【问题讨论】:

    标签: vba excel-formula dde


    【解决方案1】:

    我曾使用 Bloomberg 作为我的 API,并使用 VBA 编写引用 Bloomberg 函数的公式。除了使用连接之外,您是否可以将其他单元格的值更改为连接版本?例如,如果您希望显示出价的单元格是 A3,您是否尝试过:

    Sheets("yoursheetname").Range("A3").value = "=@TBMX|QUOTE!" & Sheets("yoursheetname").Range("A1").value & "xtr.bid"
    

    我不确定您是如何设置工作表的,但使用 R1C1 引用单元格可能更有意义,或者如果您正在为整个投资组合定价并需要填写您的公式,您可以使用 lastrow 参考.

    【讨论】:

      猜你喜欢
      • 2018-07-21
      • 1970-01-01
      • 2020-07-24
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多