Bloomberg-Daten werden nicht aufgefüllt, bis das Excel-VBA-Makro fertig ist

8

Ich führe ein Makro in einer leeren Excel 2007-Arbeitsmappe auf einem PC mit einer Bloomberg-Lizenz aus. Das Makro fügt Bloomberg-Funktionen in Blatt1 ein, die Zinskurveninformationen abrufen. Die Ergebnisse einiger zusätzlicher Funktionen hängen davon ab, ob die ersten Funktionen die Bberg-Daten beenden und korrekt anzeigen. Wenn ich durch das Programm gehe, wird nur '# N / A Requesting Data' angezeigt. . . " anstelle der Ergebnisse der Abfrage, egal wie langsam ich gehe. Da einige der Funktionen davon abhängen, dass die Ergebnisse von Zeichenfolgen und numerischen Feldern ausgefüllt werden, trifft das Programm bei diesem Code einen Laufzeitfehler. Wenn ich mit dem Debuggen aufhöre - das Programm wird vollständig beendet - erscheinen alle Bberg-Werte, die dann gefüllt sein sollten. Ich möchte, dass diese Werte angezeigt werden, während das Programm noch läuft.

Ich habe versucht, eine Kombination aus DoEvents und Application.OnTime () zu verwenden, um die Kontrolle an das Betriebssystem zurückzugeben und das Programm lange auf die Datenaktualisierung warten zu lassen, aber keiner von beiden hat funktioniert. Irgendwelche Ideen wären hilfreich. Mein Code ist unten. wb ist eine Arbeitsmappe auf globaler Ebene und ws1 ist ein Arbeitsblatt auf globaler Ebene.

Öffentlicher Sub-Run_Me ()

%Vor%

End Sub

Privates Sub Populate_Me ()

%Vor%

Sub-HardCode ()

%Vor%

End Sub

    
Diana Tortolini 29.12.2011, 15:37
quelle

3 Antworten

6

Eine Möglichkeit, dieses Problem zu umgehen, besteht darin, alle Subs usw., die Sie ausführen möchten, nachdem Sie die Bloomberg-Daten in ein anderes Sub-Objekt gezogen haben, zu platzieren. Sie müssen dies jedes Mal tun, wenn Sie Bloomberg Informationen aufrufen. Wenn Sie nach dem Application.OnTime Now + TimeValue ("00:00:15") ein anderes Sub im "Master" Sub aufrufen, wird es fehlschlagen - Sie müssen alle folgenden Subs in ein neues Master Sub einfügen.

Zum Beispiel: Anstelle von

%Vor%

Es sollte

sein %Vor%

Ich hoffe, das hilft

    
CoreyB 28.08.2013 17:34
quelle
4

Ich habe nach BloombergUI.RefreshAllStaticData gegoogelt und wurde sofort auf diese Mr Excel Seite gebracht: Ссылка

Wir sind keine Post-Antworten, die nur Links sind, falls der Link verschwindet und die Antwort mitnimmt. Ich bin mir jedoch nicht sicher, ob ich die Frage oder die Antwort gut genug verstanden habe, um es zusammenzufassen.

Der Google-Link wird wahrscheinlich für die absehbare Zukunft existieren.

In Mr Excel ist die Kette: MrExcel Message Board & gt; Frageforen & gt; Excel Fragen & gt; Bloomberg Links und Makros.

Die Schlüsselinformation scheint zu sein:

Auf Ihrem Bloomberg-Terminal, wenn Sie WAPI & lt eingeben; GO & gt; Hier finden Sie eine Liste der Bloomberg API und Beispiele zum Herunterladen.

Unter Verwendung der Hilfedateiinformationen in diesem Bereich können wir eine robustere Lösung dafür unter Verwendung der Bloomberg-Datentypbibliothek aufbauen. Gehe zu Extras | Verweise und fügen einen Verweis auf diese Bibliothek hinzu. Dieser Code kann dann verwendet werden, um die Zellen zu füllen:

%Vor%

Wenn Sie die Lösung von Mr Excel einmal ausprobiert haben, könnten Sie diese Antwort vielleicht zum Vorteil zukünftiger Besucher aktualisieren.

    
Tony Dallimore 29.12.2011 21:51
quelle
0

Ich sammelte Informationen aus dem Internet und schrieb, was imho ist eine verbesserte Version im Vergleich zu allem, was ich bisher gefunden habe:

%Vor%

Es sollte eine beliebige Aufgabe sein, indem ein Sub wie DoSomething ()

aufgerufen wird %Vor%

Das ruft eine "Callback" -Funktion auf, die sich selbst aufruft, bis entweder die Daten aktualisiert wurden oder das Zeitlimit erreicht ist

%Vor%

Jeder Kommentar wird geschätzt. Eine mögliche Verbesserung könnte darin bestehen, dass die Arbeitsmappe und / oder das Arbeitsblatt eine Eingabe der Funktion ist, aber ich habe wirklich nicht die Notwendigkeit dafür gesehen.

Prost

    
Dave 23.12.2015 12:59
quelle

Tags und Links