Python调用(彭博社的数据提供商)现有的DDE
下面是一些VBA代码,我使用通过DDE服务器,以获得从提供的数据(在这种情况下,彭博数据提供DDE服务器):Python调用(彭博社的数据提供商)现有的DDE
Sub bloom_get() nChan = DDEInitiate("BLP", "S")
sSecurity1 = "JBIG Index" & ", [MLI_DATE=" & datestr & ",MLI_TOT_RTN_LOC="", MLI_PX_RTN_LOC="", MLI_EFF_DUR=""]"""
vrtResult1 = DDERequest(nChan, sSecurity1)
MsgBox (vrtResult1(1) & " " & vrtResult1(2) & " " & vrtResult1(3) & " " & vrtResult1(4) & " ")
DDETerminate (nChan)
End Sub
我正在寻找一种方法来从Python代码中调用这样的DDE服务器。
这段代码具体到彭博DDE服务器,但即使您可以提供一个更通用的方法,这将是非常有用的。由于DDE是微软应用程序的细节,我不知道如何解决这个问题。
其中的东西,可能是helful:
- 包允许通过Python
- 使用第三APP一种解决方法调用DDE的名字,也许编码在VB或VB.NET本身叫Python,不知何故,当你在C++中创建DDL然后从VBA调用时,反之呢?
编辑:不,请求的数据不能通过官方API获取。
感谢
回答:
好了,所以这三种方法DDExxx是Excel.Application对象事实的方法,但通常省略所以实际上你的代码,其实也可以这样所以现在表示
Sub bloom_get() nChan = Application.DDEInitiate("BLP", "S")
sSecurity1 = "JBIG Index" & ", [MLI_DATE=" & datestr & ",MLI_TOT_RTN_LOC="", MLI_PX_RTN_LOC="", MLI_EFF_DUR=""]"""
vrtResult1 = Application.DDERequest(nChan, sSecurity1)
MsgBox (vrtResult1(1) & " " & vrtResult1(2) & " " & vrtResult1(3) & " " & vrtResult1(4) & " ")
Application.DDETerminate (nChan)
End Sub
你需要掌握一个Excel.Application对象。 StackOverflow在这里有一些代码Driving Excel from Python in Windows
所以做的makepy.py "Microsoft Excel 11.0 Object Library"
的初始步骤将Excel类型库导入Python库,然后一些Python代码看起来像这样(我可以承认我不写Python,但一点点谷歌搜索我可以做一个猜测)
Import ctypes from win32com.client import Dispatch
MessageBox = ctypes.windll.user32.MessageBoxA
xlApp = Dispatch("Excel.Application")
#hide app and alerts
xlApp.Visible = 0
xlApp.Application.DisplayAlerts = 0
nChan = xlApp.Application.DDEInitiate("BLP", "S")
time.sleep(1) # wait for the dde to load
sSecurity = t + ", [MLI_DATE=" + datestring + "," + fieldstring + "=""]"""
vrtResult = xlApp.DDErequest(nChan, sSecurity)
所以一些解释,VBA消息框是Python的, you'll need to import a Window's API MessageBox(因此顶部3线)不同。 Python将字符串连接到+
,而不是连接号&
。字符串可以用单引号和双引号分隔。数组用方括号访问。并且您还有其他SO问题中看到的COM Dispatch接口代码。我无法运行此代码,因为我没有彭博社。
一些Python程序员可能需要整理一些。
以上是 Python调用(彭博社的数据提供商)现有的DDE 的全部内容, 来源链接: utcz.com/qa/264497.html