Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to refresh/load RTD Bloomberg function (BDH) in excel in vba

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.

like image 506
Larry Avatar asked Oct 12 '12 10:10

Larry


2 Answers

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

like image 126
Larry Avatar answered Oct 26 '22 23:10

Larry


I recently received this answer from bbg chat. I think this is what we are all looking for...

bbg helpdesk: Normally we don''t provide help on VBA on the Help Desk but I have found the below. You can use the following VBA commands to refresh BDx() formulas:

Refresh based on default option setting: Application.Run "RefreshData"  
Refresh current selection: Application.Run "RefreshCurrentSelection"
Refresh current worksheet: Application.Run "RefreshEntireWorksheet"
Refresh current workbook: Application.Run "RefreshEntireWorkbook"
Refresh all workbooks: Application.Run "RefreshAllWorkbooks"

Note: When using VBA macros to refresh Bloomberg formulas, the formulas cannot complete requesting data while the macro that triggered the refresh is running. You must use Application.OnTime() to schedule a second function to run after the sub-routine that triggered the refresh exits. The following code snippet demonstrates the VBA code to refresh all workbooks, followed by a 10 second delay before calling the processSheet sub-routine:

    Sub refreshSheet()
        Application.Run "RefreshEntireWorksheet"  
        Application.OnTime (Now + TimeValue("00:00:10")), "processSheet"
    End Sub


    Sub processSheet()
        ' perform processing here
    End Sub
like image 43
ghulli Avatar answered Oct 27 '22 01:10

ghulli