1

Excel 用の Bloomberg アドインで発生している問題を解決しようとしています。毎日、500 株以上の過去 31 日間の価格データを入力しています。

$A$K3 = "ACE US EQUITY" $AL$3 = "=BDH(AK3,"PX_LAST",$D$1,$C$1,"DTS=h","dir=h")" $C$1 = " =WORKDAY(TODAY(),0)" $D$1 = "=BAddPeriods(C1,"NumberOfPeriods=-31","Per=wd","CDR=#A")"

$AL$3:$BQ$3 で 31 日間の価格が発生するはずです。

Bloomberg 実行可能ファイルが実行されていなくても、Bloomberg DDE セッションが 3 日間開いたままになるため、ワークブックを開いたままにします。

問題がなく、翌日出勤すると、データが 1 日進んでいる場合があります。また、多くのデータが欠落しているため、各 $AL$_ フィールドを選択して更新する必要がある場合もあります。これに関する問題は、何らかの理由で更新が同期的に行われていることであり、これが DDE 接続や Excel に大混乱を引き起こしていると思います。その結果、更新が遅くなる/更新されない。また、ワークシート全体を更新すると、いくつかの数式が静的データで上書きされます!

私がやりたいことは、次のマクロを作成することです。

1) $AL$ :$BQ $ および $BS$ :$CX $のすべてのデータを消去します

2) $AL$_ = "=BDH(AK$_,"PX_LAST",$D$1,$C$1,"DTS=h","dir=h")" の値を設定します

3) $AL$(+1):$BQ$(+1) に移動する前に、データが $AL$ :$BQ$に入力されるまで待ちます。$AM$_ に値がある場合、その行にデータが取り込まれている可能性があります。

4) $AL$ :$BQ$が終了したら、$BS$ :$CX$に対して同じことを行います。

ブルームバーグのサポートがこの要求を満たすのを 1 か月以上待っていますが、結果はありません。

私はこれを実行するのに十分な経験がありません。

レコーダーを使用して作成した以下の非常に少量のコードがあります。

Sub PopulateData()
'
' PopulateData Macro 
'

'
Range("AL2:BQ2").Select
Selection.ClearContents
Range("AL2").Select
ActiveCell.FormulaR1C1 = _
    "=BDH(RC[-1],""PX_LAST"",R1C4,R1C3,""DTS=h"",""dir=h"")"
Range("AL2").Select
End Sub

記録中に更新ボタンを選択しましたが、このアクションは記録されませんでした。ご覧いただきありがとうございます。

4

1 に答える 1

0

数式を一度に 1 行ずつ実行し、数式を値で上書きして、次の反復で同時クエリが実行されないようにするマクロ ソリューション:

Sub CalculateLineByLine
   For Each c In Range("AL2:AL501")
      c.FormulaR1C1 = "=BDH(RC[-1],""PX_LAST"",R1C4,R1C3,""DTS=h"",""dir=h"")"
      Calculate
      Range(c.address, "BQ" & c.row)).Copy
      c.PasteSpecial xlPasteValues
   Next c
End Sub

古いデータは特殊な貼り付けで上書きされるだけだと思っていたので、内容を手動でクリアしませんでした。これがあなたにとって可能な解決策として機能することを願っています。

最後のコメントを正しく読んだ場合、式が手動に設定されているときに F9 キーを押して、開いているすべてのブックを手動で計算しようとしていました。

于 2013-03-07T22:07:09.423 に答える