VBA Bloomberg (BDH) формула для извлечения данных - PullRequest
0 голосов
/ 23 сентября 2019

У меня проблема с запуском формулы Bloomberg BDH через код VBA.

Формула в коде отлично работает при выполнении на листе Excel в формате формулы (ввод формулы в ячейку)

но когда я помещаю формулу в код VBA и, соответственно, заново ее печатаю, я получаю ошибку, которую не могу понять.

это формула, выполняемая в ячейке (которая работает следующим образом):

=BDH("CNC US Equity","Best_Ask,Best_Bid,Trade","2019-02-06 09:00:00","2019-02-07 22:00:00","Dir=V","IntrRw=true","CondCodes=S","QRM=S","Spread=S","ExchCode=S","Dts=S")

В VBA BDH formula через InputSheet я ссылаюсь на акцию, например, CNC US Equity, необходимые параметры Best_Ask,Best_Bid,Trade и dates.

формула должна быть вставлена ​​в несколько ячеек на нескольких листах, ссылаясь в каждом случае на разные equity и разные date range

, вот где у меня проблема с кодомдаже вставить формулу в ячейку, я трижды проверил каждое значение, на которое есть ссылка в формуле, но все кажется правильным, я даже запустил формулу test excel Worksheets(Exportsheet1).Cells(1, z).Value = "=SQRT(4)", чтобы увидеть, есть ли какие-либо проблемы в коде, ноничего не нашел.

 Dim name1(423) As Variant
 Dim out2(33, 17) As Variant
 Dim A As Variant
 Dim B As Variant
 Dim C As Variant
 Dim B1 As Variant
 Dim B2 As Variant
 Dim x As Integer
 Dim y As Integer
 Dim z As Integer
 Dim t As Integer
 Dim w As Integer


 Const InputSheet = "DATA"
 Const InputRange = "D2:AB424"
 Const nameRange = "C2:C424"
 Const Exportsheet1 = "Tempo1"
 Const Exportsheet2 = "Tempo2"
 Const Exportsheet3 = "Tempo3"
 Const Exportsheet4 = "Tempo4"
 Const Exportrange1 = "A1:AX34"


 Sheets(InputSheet).Activate

 z = 1
 For x = 1 To 100
    For y = 2 To 26
        If IsEmpty(Worksheets(InputSheet).Cells(x, y).Value) = False Then
            'Worksheets(Exportsheet1).Cells(1, z).Value = "=SQRT(4)"
            Worksheets(Exportsheet1).Cells(1, z).Value = "=BDH(WorkSheets(InputSheet).Cells(x, 1).Value;WorkSheets(InputSheet).Cells(424, 1).Value;""""WorkSheets(InputSheet).Cells(x, y).Value - 1)"""";""""WorkSheets(InputSheet).Cells(x, 1).Value"""";""""Dir=V"""";""""IntrRw=true"""";""""CondCodes=S"""";""""QRM=S"""";""""Spread=S"""";""""ExchCode=S"""";""""Dts=S"""")"

            z = z + 1

        End If
    Next y
 Next x


End Sub
...