Refresh Bloomberg, per Loop oder VBScript

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Mono.

    Refresh Bloomberg, per Loop oder VBScript

    Hallo,
    bin seit Tagen auf der Suche nach einer Problemlösung und hoffe hier kann mir endlich jemand helfen.

    Was ich tun möchte: Jeden Tag soll um eine bestimmte Uhrzeit eine Arbeitsmappe (AM1) geöffnet werden, welche Daten enthält, die mithilfe des Bloomberg Add-Ins ständig aktualisiert werden. Diese Daten sollen dann automatisch in eine weitere Arbeitsmappe (AM2) kopiert werden, samt Datum und Uhrzeit. Danach soll (M2) gespeichert und beide Mappen geschlossen werden. Dazu habe ich ein VBScript geschrieben, welches ich um 12.00 Uhr per Aufgabenplanung starten soll und dann die AM1 öffnet und deren Makro "schreibeZeitreihe" öffnet, welches die Daten in AM2 kopiert.

    Wo liegt mein Problem:
    Das Makro "schreibeZeitreihe" funktioniert wunderbar, aber wenn ich per VBScript AM1 öffnen lasse, aktualisiert Bloomberg die Daten nicht mehr. Es scheint als habe sich das Add-In deaktiviert. Der Befehl "Application.Run "RefreshEntireWorkbook", der beim "manuellen" Öffnen der Arbeitsmappe problemlos funktioniert, ist auf einmal nicht mehr verfügbar und das Bloomberg Ribbon ist zwar noch vorhanden, aber bei jedem Druck auf einen Button erscheint "Bloomberg Excel Tools is either corrupt or missing." Jedes Feld in dem eigentlich Bloomberg-Werte stehen sollten, enthält die Fehlermeldung "#NAME?".

    Meine bisherigen Lösungsansätze:
    1) Ich habe das VBScript bereits mit dem Befehl erweitert, dass er das Add-In "Bloomberg Excel Tools" auf installiert setzt. Auch x-beliebig langes Warten ist keine Lösung - weiterhin der Name Error.
    2) Ich habe auch überlegt das VBScript einfach wegzulassen und eine dritte Arbeitsmappe(AM3) mit einem Makro zu versehen, welches das Makro von AM1 startet. Dazu habe ich dann einen Loop eingebaut, der abwarten soll, bis in keinem Feld mehr "#N/A Requesting Data..." steht. Auch das hat bisher nicht funktioniert, Bloomberg aktualisiert die Daten erst, wenn das Sub "aktualisiere" komplett durchgelaufen ist.

    VB-Script Code zum Lösungsvorschlag 1)

    Quellcode

    1. Option Explicit
    2. Const sPath="\\User\....\Desktop\exceltest\"
    3. Const sXL1="test2.xlsm"
    4. Dim xlApp
    5. Set xlApp = WScript.CreateObject("Excel.Application")
    6. xlApp.Visible = true
    7. xlApp.AddIns("Bloomberg Excel Tools").Installed = True
    8. xlApp.Workbooks.Open sPath & sXL1, true
    9. xlApp.run("schreibeZeitreihe")


    VBA-Makro zum Lösungsvorschlag 2) (habe die Werte hier einfach mal ins gleiche Workbook übertragen, ist nur eine Testdatei.)

    Quellcode

    1. Public Sub aktualisiere()
    2. Call Sheets(1).Range("M6:N6").Select 'assuming cell a1 is in "sheet1" of your workbook
    3. Call Application.Run("RefreshCurrentSelection")
    4. Application.Wait (Now + TimeValue("00:00:05"))
    5. Call ProcessData
    6. Application.Wait (Now + TimeValue("00:00:05"))
    7. Call Application.OnTime(Now + TimeValue("00:00:01"), "schreibeWerte")
    8. End Sub
    9. Private Sub ProcessData()
    10. Dim c As Range
    11. For Each c In Selection.Cells
    12. If c.Value = "#N/A Requesting Data..." Then
    13. Call Application.OnTime(Now + TimeValue("00:00:01"), "ProcessData")
    14. Exit Sub
    15. End If
    16. Next c
    17. End Sub
    18. Public Sub schreibeWerte()
    19. ThisWorkbook.ActiveSheet.Range("A1").Value = Now
    20. ThisWorkbook.ActiveSheet.Range("B1").Value = ThisWorkbook.ActiveSheet.Range("N6")
    21. End Sub


    Der Loop stammt nicht von mir, sondern ich habe versucht folgenden Lösungsvorschlag umzusetzen: reddit.com/r/excel/comments/3a…rg_data_to_update_before/

    Ich bin wie ihr vielleicht erkennt noch ein Grünschnabel, hoffe aber, dass mir jemand helfen kann :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cappo493“ ()

    Erstmal vielen Dank für die sehr schnelle Antwort. Da ich wie gesagt noch Anfänger bin, mache ich momentan ein wenig Trial and error und komme aber leider schon sehr früh nicht weiter.

    Ich habe den Vorschlag jetzt mal so im VBScript umgesetzt, erhalte aber leider schon einen Fehler

    Quellcode

    1. Option Explicit
    2. Const sPath="\\user\....\Desktop\exceltest\"
    3. Const sXL1="test2.xlsm"
    4. Dim xlApp
    5. Set xlApp = WScript.CreateObject("Excel.Application")
    6. xlApp.Visible = true
    7. xlApp.Workbooks.Open("C:\Program Files (x86)\blp\API\Office Tools\BloombergUI.xla")
    8. xlApp.Workbooks("BloombergUI.xla").RunAutoMacros 1 'Zeile 11
    9. xlApp.Workbooks.Open sPath & sXL1, true


    Fehler: Windows Script Host
    Zeile 11, Zeichen 1: Der Remoteservercomputer ist existiert nicht oder ist nicht verfügbar: 'Workbooks'"

    Vermutlich ist meine Umsetzung falsch, habe aber ein wenig rumprobiert und komme leider auf keinen grünen Zweig.
    Außerdem wäre es vermutlich noch hilfreich, wenn ich auch andere Com-Add-Ins von Bloomberg einbinde. Das sind dll-Dateien. Leider bin ich mir auch hier nicht ganz sicher, wie ich diese aktiviere.

    Visual Basic-Quellcode

    1. Dim xlApp, wb
    2. Set xlApp = CreateObject("Excel.Application")
    3. xlApp.Visible = true
    4. set wb = xlApp.Workbooks.Open("C:\Program Files (x86)\blp\API\Office Tools\BloombergUI.xla")
    5. If wb Is nothing then
    6. Msgbox("C:\Program Files (x86)\blp\API\Office Tools\BloombergUI.xla not found")
    7. else
    8. wb.RunAutoMacros 1
    9. end if


    Was kommt aus?
    Das ist meine Signatur und sie wird wunderbar sein!
    Fehler: Windows Script Host
    Zeile 9, Zeichen 1:
    Der Remoteservercomputer exisitiert nicht oder ist nicht verfügbar: 'RunAutoMacros'.

    Excel öffnet sich zwar im Hintergrund, gibt aber folgenden Fehler: Laufzeitfehler 50290:
    Die Methode 'Run' für das Objekt '_Application' ist fehlgeschlagen.
    Also das Add-In ist unter den aktiven Add-Ins (Optionen->Add-Ins) zu finden.
    Habe aber jetzt was entdeckt: Und zwar sind unter den aktiven Add-Ins fünf Bloomberg-Add-Ins zu finden, wenn ich es manuell öffne.
    Wenn ich es aber per VBScript öffne sind es lediglich vier. Es fehlt das Add-In Bloomberg.rtd, Dateiname: bbrtd.dll!
    Vielleicht muss ich exakt diese Datei per VBScript wieder aktivieren?

    Habe schon ein wenig rumprobiert, aber habe leider keine Ahnung wie der entsprechende Code aussehen muss ?(