How to refresh/load RTD Bloomberg function (BDH) i

2020-02-04 06:57发布

I would like to know if there's a way in VBA code forcing the bloomberg functions (In spreadsheet) to update its value( Any BDH functions)

Targeting Developers have faced similar issue/ have Bloomberg terminal

What have I tried--

Application.RTD.RefreshData
Application.RTD.throttleInterval = 0
Application.CalculateFull

The BDH function do not reload themselve.

The only way I can refresh them now is : I click the "Refresh WorkBook" Button on the Ribbon of the BloomBerg add-in.

Since the Bloomberg Add-in is locked in VBE, I cannot find out the necessary code. Am I missing any Bloomberg Reference? Can any Bloomberg expert/user point me in the right direction? Thanks.

4条回答
甜甜的少女心
2楼-- · 2020-02-04 07:04

This works for me:

WS.Select
WS.Range("A5").Select 'the cell that contains the BDH function
Application.Run "RefreshCurrentSelection"
查看更多
放荡不羁爱自由
3楼-- · 2020-02-04 07:19

I've found that changing something in the BDH formula would cause a refresh. Find and replace the = sign would do the tick.

Public Sub Recalc()
    Dim ws As Worksheet, FormulaCells As Range, c As Range
    Application.Calculation = xlCalculationManual
    For Each ws In ThisWorkbook.Worksheets
        On Error Resume Next
        ws.Activate
        Set FormulaCells = ws.UsedRange.SpecialCells(xlCellTypeFormulas).Cells
        If Err = 0 Then
            For Each c In FormulaCells
                c.Formula = Replace(c.Formula, "=", "=")
            Next 'c
        Else
            Err.Clear
        End If
    Next 'ws
    Application.Calculation = xlCalculationAutomatic
End Sub
查看更多
男人必须洒脱
4楼-- · 2020-02-04 07:20

I have never managed to do what you ask for. The only reliable way I have found to get up-to-date data is by calling the API directly from VBA with BLP_DATA_CTRLLib.BlpData, waiting for the answer, and putting the result into a sheet.

With regards to opening password protected VBA code, a google or stackoverflow search should give you your answer.

查看更多
三岁会撩人
5楼-- · 2020-02-04 07:23

I did a searching of the keyword "refresh" in the xla by opening it in notepad. Found the following targets:

RefreshAllWorkbooks
blpmain.xla!RefreshAllStaticData
blpmain.xla!'RefreshWorkbookFundamentalsData
blp.xla!IsBlpRefreshAvailable

I tried them out one by one, the first 2 works by calling:

Application.run "RefreshAllWorkbooks"
Application.run "RefreshAllStaticData"

But not calling them alone ( I guess it's because I somehow can call protected PUBLIC procedure using Application.run)

RefreshAllWorkbooks

or

RefreshAllStaticData

Thanks for all the help

查看更多
登录 后发表回答