启用彭博电子表格的发行问题

时间:2019-06-19 19:12:14

标签: excel vba bloomberg

我创建了一个电子表格,其中(可选)使用通过API COM 3.5类型库提取的彭博数据。我希望能够将该电子表格分发给非彭博用户,但由于他们没有正确的库,他们无法运行它。

如果非BB用户不应该输入语句,则除类模块中的内容外,所有与blpapi相关的代码都位于后面。在类模块中,我懒惰地定义了会话和服务,以便将blpapi特定的定义延迟到类初始化之前(见下文):

Option Explicit
Private session As Object
Dim refdataservice As Object

Private Sub Class_Initialize()

   ' First create session.
   Set session = New blpapicomLib2.session
   session.QueueEvents = True
   session.Start

   ' Then open service.
   ' A service provides the schemas needed to make requests.
   session.OpenService "//blp/refdata"
   Set refdataservice = session.GetService("//blp/refdata")

End Sub

简而言之-似乎引起问题的代码永远不会运行。我对VBA的了解(非常有限)主要是功能性的,因此我可能缺少明显的东西。这是与编译相关的错误吗?我有办法预编译VBA,以使用户不会遇到此问题吗?也许某种类型的错误处理方法使工作簿不会挂起?

1 个答案:

答案 0 :(得分:0)

这是我自己的问题的解决方案:

我有两个函数,它们的输入使用库特定的类型。我将它们转换为通用对象(在会话上使用后期绑定和refdataservice不够)。然后,我取消选择bbcom库,并在Workbook_Open()中向dll文件添加了动态引用。即使加载失败,也可以捕获错误,而必须先消除excel。如果用户尝试使用使用与BB相关的代码的工作簿的一部分,这仍然是一个问题,但是可以通过几种不同的方式来缓解这种情况。