Vba 彭博API:如何检查连接是否工作?
我正在实现一个依赖于Bloombergs blpapilib2的工具,即Bloomberg API COM Lib 3.5 在允许用户访问任何刷新数据功能之前,我希望确保连接正常。我目前的做法是:Vba 彭博API:如何检查连接是否工作?,vba,bloomberg,Vba,Bloomberg,我正在实现一个依赖于Bloombergs blpapilib2的工具,即Bloomberg API COM Lib 3.5 在允许用户访问任何刷新数据功能之前,我希望确保连接正常。我目前的做法是: 检查库是否可用并链接。基本上,通过引用进行循环就可以完成这项工作 打开与session.Start()的连接。我希望在这里得到一个错误,但它不会给我一个。因此,步骤3 请求一些数据并验证它(确保它不是空的) 令人惊讶的是,我无法可靠地重现得到的结果是空的。我希望我的会话依赖于一个用户被注入终端。看来我
- bbcom服务器中的一些后台缓存
- 使用另一种身份验证方法
我有两个问题: 问题1。确保用户能够下载数据的最佳方式是什么 问题2。如何验证连接是否已成功建立以及用户是否已通过身份验证 谢谢。要“切断”连接,您需要注销并登录到其他计算机。如果您只是注销,那么该提要仍然可以使用API使用 这就是我测试连接的方式——我认为它工作得相当好。我有一个
BloombergWrapper
类,它处理与API通信的所有底层内容,并具有以下功能:
Private pSession As blpapicomLib2.Session
Private pService As blpapicomLib2.Service
Private Sub Class_Initialize()
Dim locStatusBar As Variant
Dim locBbResult As Variant
On Error GoTo error_handler
If Application.StatusBar = False Then locStatusBar = False Else locStatusBar = Application.StatusBar
Application.StatusBar = "Connecting to Bloomberg..."
Set pSession = New blpapicomLib2.session
pSession.Start
pSession.OpenService ("//blp/refdata")
Set pService = pSession.getService("//blp/refdata")
Application.StatusBar = locStatusBar
Exit Sub
error_handler:
If InStr(Err.Description, "timeout") Then
Call MsgBox("A Bloomberg timeout has occured. Make sure you are logged on your terminal.", vbCritical + vbOKOnly, "Bloomberg error...")
End If
If locStatusBar <> "" Then Application.StatusBar = locStatusBar
End Sub
Private Sub Class_Terminate()
pSession.Stop
Set pSession = Nothing
End Sub
Private pSession作为blpapicomLib2.Session
作为blpapicomLib2.Service的私有pService
私有子类_Initialize()
Dim locStatusBar作为变体
Dim Locbresult作为变量
关于错误转到错误处理程序
如果Application.StatusBar=False,则locStatusBar=False,否则locStatusBar=Application.StatusBar
Application.StatusBar=“连接到彭博社…”
Set pSession=New blpapicomLib2.session
会话,开始
pSession.OpenService(“//blp/refdata”)
Set pService=pSession.getService(“//blp/refdata”)
Application.StatusBar=locStatusBar
出口接头
错误\u处理程序:
如果指令(错误描述,“超时”),则
调用MsgBox(“发生彭博超时。请确保您已登录到终端。”,vbCritical+vbOKOnly,“彭博错误…”)
如果结束
如果locStatusBar为“”,则Application.StatusBar=locStatusBar
端接头
私有子类_Terminate()
请停止
设置pSession=Nothing
端接头
谢谢,这看起来很像我要找的。出于某种原因,`On Error GoTo errHandler`没有捕获我得到的运行时错误:“运行时错误-2147024809(80070057):服务'//blp/refdata'未找到”。为什么?(库已链接,BB未运行,并且从未在此计算机上运行过,但已安装。)谢谢!只是一个快速更新,我让调试器停止处理所有错误,包括那些在哪里处理的错误,使得任何错误处理都毫无意义;)这个解决方案非常有效。谢谢