7

ブルームバーグ関数 (スプレッドシート内) に強制的に値 (任意の BDH 関数) を更新させる方法が VBA コードにあるかどうかを知りたいです。

ターゲット開発者は同様の問題に直面している/Bloomberg端末を持っている

私は何を試しましたか--

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

BDH 関数自体は再ロードしません。

今すぐ更新できる唯一の方法は、BloomBerg アドインのリボンにある [ワークブックの更新] ボタンをクリックすることです。

Bloomberg Add-in が VBE でロックされているため、必要なコードが見つかりません。ブルームバーグのリファレンスがありませんか? ブルームバーグの専門家/ユーザーは、私を正しい方向に向けることができますか? ありがとう。

4

5 に答える 5

9

xlaでキーワード「refresh」をメモ帳で開いて検索しました。次のターゲットが見つかりました:

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

私はそれらを一つずつ試してみました、最初の2つの作品は電話で:

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

ただし、それらを単独で呼び出すのではありません(Application.runを使用して保護されたPUBLICプロシージャを呼び出すことができるためだと思います)

RefreshAllWorkbooks

また

RefreshAllStaticData

すべての助けをありがとう

于 2013-01-17T04:23:37.257 に答える
1

私はあなたが要求したことを成し遂げることができませんでした。最新のデータを取得するために私が見つけた唯一の信頼できる方法は、VBA から直接 API を呼び出し、BLP_DATA_CTRLLib.BlpData応答を待って、結果をシートに入れることです。

パスワードで保護された VBA コードを開くことに関しては、google または stackoverflow 検索で答えが得られるはずです。

于 2013-01-16T17:44:54.430 に答える
1

BDH 式で何かを変更すると、更新が発生することがわかりました。記号を見つけて置き換えると=、目盛りが表示されます。

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
于 2015-02-25T18:46:34.847 に答える