Excel:公式执行的动态数据交换API问题



不确定这是否是问这个问题的合适论坛,如果这对SO来说太具体(即财务-y(,很抱歉。我以前没有使用过excel DDE,在网上找不到任何类似我问题的内容。

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

Public Function eval(s As String) As Variant
eval = Evaluate(s)
End Function

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

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

我曾使用Bloomberg作为我的API,并使用VBA对引用Bloomberg函数的公式进行编码。与其使用连接,您是否可以将其他单元格的值更改为连接版本?例如,如果你想让出价显示在A3中,你尝试过吗:

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

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

最新更新