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

回到顶部