我终于从 Refinitiv 开发者论坛获得了一些好的建议,我想在这里分享:
我认为您应该直接使用 API,而不是打开电子表格并从中获取数据——但我们所有的 API 都有限制。工作表函数也有限制(它使用与我们的 API 相同的后端服务)——我想你已经发现了。
您可以直接在 VBA 中使用我们较旧的 Eikon COM API。在这种情况下,您可能希望使用 DEX2 API 打开会话并下载数据。您可以在此处找到更多详细信息和 DEX2 教程示例:
https://developers.refinitiv.com/en/api-catalog/eikon/com-apis-for-use-in-microsoft-office/tutorials#tutorial-6-data-engine-dex-2
但是,我建议在 Python 环境中使用我们的 Eikon Data API,因为它更现代,并且会为您提供比 COM API 更好的体验。如果你有一个 50K 仪器的列表,比如说 - 你可以使用一些分块对 5K 仪器进行 10 次 API 调用,这对你来说管理起来会容易得多 - 甚至不需要使用 Excel - 然后你可以使用任何 Python SQL 工具摄取到您希望的任何数据库 - 全部来自一个 python 脚本。
将 refinitiv.dataplatform.eikon 导入为 ek ek.set_app_key('YOUR APPKEY HERE')
riclist = ['VOD.L','IBM.N','TSLA.O']
df,err = ek.get_data(riclist,["TR.CLOSEPRICE(adjusted=0).date","TR.CLOSEPRICE(adjusted=0)",'TR.CompanySharesOutstanding','TR.Volume','TR.周转'])
df #df.to_sql - 请参阅下面的注释 #df.to_csv("test1.csv") 1641297076596.png
这将为您返回一个 pandas 数据框,您可以轻松地将其直接写入任何 SQLAlchemy 数据库(参见此处的示例)或 CSV / JSON 等。
不幸的是,我们公司的政策目前不允许使用 Python。但是 VBA 解决方案也有效,尽管它需要一些时间来理解本教程并且它有更多的限制。