全部,以下代码来自彭博社。 它旨在从其服务器提取批量数据。 该代码有效,但是我尝试提取在类模块中生成的特定变量,并将其带到用于用户定义函数的常规模块中。 谢谢您的帮助。

Option Explicit
Private WithEvents session As blpapicomLib2.session
Dim refdataservice As blpapicomLib2.Service

Private Sub Class_Initialize()
Set session = New blpapicomLib2.session
session.QueueEvents = True
session.Start
session.OpenService ("//blp/refdata")
Set refdataservice = session.GetService("//blp/refdata")
End Sub

Public Sub MakeRequest(sSecList As String)
Dim sFldList As Variant
Dim req As Request
Dim nRow As Long
sFldList = "CALL_SCHEDULE"
Set req = refdataservice.CreateRequest("ReferenceDataRequest") 'request type
req.GetElement("securities").AppendValue (sSecList) 'security + field as string array
req.GetElement("fields").AppendValue (sFldList) 'field as string var
Dim cid As blpapicomLib2.CorrelationId
Set cid = session.SendRequest(req)
End Sub

Public Sub session_ProcessEvent(ByVal obj As Object)
Dim eventObj As blpapicomLib2.Event
Set eventObj = obj
If Application.Ready Then
    If eventObj.EventType = PARTIAL_RESPONSE Or eventObj.EventType = RESPONSE Then
        Dim it As blpapicomLib2.MessageIterator
        Set it = eventObj.CreateMessageIterator()
        Do While it.Next()
            Dim msg As Message
            Set msg = it.Message
                Dim Security As Element
                Set Security = msg.GetElement("securityData").GetValue(0)
                Sheet1.Cells(4, 4).Value = Security.GetElement("security").Value
                Dim fieldArray As Element
                Set fieldArray = Security.GetElement("fieldData")
                    Dim field As blpapicomLib2.Element
                    Set field = fieldArray.GetElement(0)
                    If field.DataType = 15 Then
                        Dim numBulkValues As Long
                        numBulkValues = field.NumValues '76
                        Dim index As Long
                        For index = 0 To numBulkValues - 1
                            Dim bulkElement As blpapicomLib2.Element
                            Set bulkElement = field.GetValue(index)
                            Dim numBulkElements As Integer
                            numBulkElements = bulkElement.NumElements '2 elements per each pt
                            ReDim Call_Sch(0 To numBulkValues - 1, 0 To numBulkElements - 1) As Variant
                            Dim ind2 As Long
                            For ind2 = 0 To numBulkElements - 1
                                Dim elem As blpapicomLib2.Element
                                Set elem = bulkElement.GetElement(ind2)
                                Call_Sch(index,ind2)=elem.Value
                                Sheet1.Cells(index + 4, ind2 + 5) = elem.Value
                            Next ind2
                        Next index
                    Else
                    Call_Sch(index,ind2)=field.Value    
                    Sheet1.Cells(index + 4, ind2 + 5).Value = field.Value
                    End If
        Loop
    End If
End If
End Sub

我想获取的变量特别是Call_Sch。 我希望主模块中的函数能够识别该变量。 再次感谢。

===============>>#1 票数:0

在其上使用ReDim之前不必声明变量; ReDim可以声明一个变量。 但是,如果添加了:

Public Call_Sch() as Variant ' Insert correct data type here

那么您将可以通过以下方式引用它:

<YourClassVaraibleName>.Call_Sch 

  ask by user2217688 translate from so

未解决问题?本站智能推荐: