2016-12-21 6 views
1

У меня есть следующий код, который отлично работает с Excel 2010, но из-за обновленного API от Bloomberg этот код не будет работать в Excel 2016. Ссылка BLP_DATA_CTRLLib.BlpData устарела, но я изо всех сил стараюсь использовать новую ссылку API.Ссылка на Bloomberg API

Кто-нибудь знает, как обновить ссылку на Bloomberg для хранения котировок?

Function Get_BBG_Price(dataa As Variant, CISI As Long) 

    Dim ReqSecurities As Variant, vtResult As Variant, ReqFields As Variant 
    Dim Arraystr As String 
    Dim oBlp As BLP_DATA_CTRLLib.BlpData 

    ReDim ReqSecurities(1 To UBound(dataa, 1)) 

    For i = 1 To UBound(dataa, 1) 

     ReqSecurities(i) = dataa(i, CISI) & "@IEHY ISIN" ' 

    Next i 

    Set oBlp = New BlpData 

    ' 
    ReqFields = Array("PX_BID") 

    With oBlp 
     .SubscriptionMode = ByRequest 
     .Subscribe ReqSecurities, 1, ReqFields, , , vtResult 
    End With 

    Get_BBG_Price = vtResult 

End Function 
+0

Определите борьбу, чтобы мы могли помочь вам, вы получаете сообщение об ошибке из кода или неожиданных результатов, как есть? Можете ли вы указать на строку кода, дающую вам проблемы? –

+0

Пожалуйста, опубликуйте документацию re Bloomberg. Шансы на то, что сообщество SO имеет это, очень тонкие. –

+0

@JimmySmith: Это проблема BLP_DATA_CTRLLib.BlpData. Если я запустил его в Excel 2016, рабочий лист просто сработает. – Jeweller89

ответ

0

Я смотрел, и похоже, что эта версия кодировки устарела. Я бы понять вы получите ошибки по линии «не может создать объект», но он может скрываться, что в 2016 году

Вы бы, вероятно, хотите использовать C# версии они имеют здесь, https://www.bloomberglabs.com/api/libraries/

Для поместите его в использование, я бы использовал код здесь, http://mikejuniperhill.blogspot.com/2013/06/bloomberg-v3com-api-wrapper-update-for.html * Код слишком длинный или я бы разместил его здесь.

+1

Спасибо за ваш ответ. Мне нужен код в VBA, поэтому C# не вариант. Пожалуйста, у вас есть предложение о том, как я могу заменить устаревшую ссылку? – Jeweller89

+0

Вы не можете напрямую использовать версию C#, но оболочка позволит вам. Вам просто нужно установить сборку (DLL или EXE), а затем выполнить вызовы через обертку, которую они написали. –

+0

Я нашел там версию C++, но это также требует регистрации DLL. Многие .NET совместимы с COM, у него просто есть оболочка, которая учитывает, что типы переменных изменяются между VBA и VB.NET/C# –