2016-05-06 4 views
0

Я получаю случайную ошибку времени выполнения при попытке вернуть 4 поля для списка акций. Сбой вызова для случайных акций и изменение подписанных полей не повлияли. Это подробный текст ошибки:Исключение времени выполнения при использовании Bloomberg BLPSubscribe в VBA/Excel

Ошибка выполнения «-2147467259 (80004005) # N/A Fld

И это код.

Dim bbgdata As new BLP_DATA_CTRLLib.BlpData 
bbgdata.BLPSubscribe(sec, Array("PX LAST", "CUR_MKT_CAP", "3MTH_IMPVOL_100.0%MNY_DF", "VOLUME_AVG_90D")) 
+0

# N/A Fld означает, что один из поля не действует для одного (или все) данных ценных бумаг. Вы можете попробовать формулу BDP в excel с одинаковыми значениями, чтобы увидеть, какой тикер/поле является проблемой. – assylias

+0

@assylias Вызов с тем же набором данных работает после перезапуска приложения vba. Я собрал свои звонки, и неудача не настолько прерывистая. Я получаю ту же ошибку, когда я пытаюсь без входа в BLP API. – frostbite

+0

Вы попросили ПОМОЧЬ ПОМОЩЬ? – assylias

ответ

0

Исправление состоит в том, чтобы вывести результаты на лист, а не кэшировать его в объекты.

bbgdata = bbgDataControl.BLPSubscribe(seclist, Array("PX_CLOSE_1D", "PX LAST", "CUR_MKT_CAP", "3MTH_IMPVOL_100.0%MNY_DF", "VOLUME_AVG_90D")) 
dataSheet.Range("BBG").Resize(UBound(bbgdata) + 1, UBound(bbgdata, 2) + 1) = bbgdata 

Раньше я делал ввод данных в объектах, как:

For i = 0 To ub 
    Dim bbgData as new BBGData 
    bbgData.lastClose = bbgdata(i,0) 'etc. 
next i 
Смежные вопросы