(C) 2009 - 2021 by Mourad Louha · Alle Rechte vorbehalten

Grafik aus dem Internet automatisch in Excel zeitgesteuert aktualisieren

Im Excel Hilfe Forum bei „Office Lösung“ stellte jemand die Frage, ob es denn möglich sein, eine Grafik aus dem Internet jede Minute automatisch aktualisieren zu lassen. Der User hatte im Forum einige Beispiel-URL’s angegeben, die eine Grafik (Gif) in einem definierten Zeitintervall auf dem Server aktualisiert.

In diesem Fall wird die Grafik auf dem Server jedoch dynamisch generiert und in Form von Rohdaten ohne jeglichen HTML-Code an den Browser übertragen. So nebenbei, in PHP würde man hierzu beispielsweise die Funktion header() und readfile() einsetzen. Die PHP Funktionen ermöglichen, wenn sie in einer bestimmten Reihenfolge und durch eine Angabe diverser Parameter (wie z.B. den Inhaltstyp „Content-Type“) aufgerufen werden, das direkte Senden binärer Daten an den Browser. Eine Webabfrage in Excel kann mit solchen Daten leider nicht umgehen. Somit muss eine andere Lösung her.

Excel Dynamic Image

Da der User auch eine automatische Aktualisierung wünschte, kommt letzten Endes nur VBA in Frage. In Excel VBA ermöglicht die Methode „Application.OnTime()“, eine weitere Methode zu einem vordefinierten Zeitpunkt auszuführen. Und da ja Excel Zeichenobjekten (z.B. Rechtecke) eine Grafik sowohl manuell als auch per Code zugewiesen werden kann, ist die VBA Lösung recht einfach.

Die Beispielmappe, die am Ende dieses Artikels auch heruntergeladen werden kann, demonstriert dies anhand einer URL. Voraussetzung ist natürlich, dass Excel auch Zugriff zum Internet hat.

Zunächst habe ich in Excel 2003 in die Tabelle „Example“ meiner Beispielmappe ein Rechteck aus der Symbolleiste „Zeichnen“ eingefügt. In höheren Excel Versionen als 2003 kann dafür im Menüband der Reiter „Einfügen“ und die Schaltfläche „Formen“ verwendet werden. Dem Rechteck habe ich den Namen „Picture“ über das Excel Namensfeld zugewiesen. Eine Schaltfläche zum späteren Aufrufen meiner VBA Methode habe ich auch schon zu diesem Zeitpunkt vorgesehen. Als Zelle, die die URL aufnehmen soll, habe ich E5 festgelegt.

Dann kann zum VBA Editor gewechselt, ein neues Modul angelegt und folgender Code angelegt werden.

Die Konstanten im oberen Bereich definieren die Namen der Objekte in der Tabelle und die Position der für den Code relevanten Zellen. Die Zeitspanne für die Aktualisierung wird in der Konstanten „mlchInterval“ definiert. Die Variable „mlvpAutomatic“ hält den Status fest, nämlich ob gerade der automatische Abruf der Grafik von der URL aktiv ist oder nicht. In der Variable „mlvpTime“ wird der nächste Zeitpunkt festgehalten, an dem eine Aktualisierung stattfindet.

In der Funktion „mlfpUpdate()“ wird geprüft, ob die automatische Aktualisierung aktiv ist. Wenn nein, dann wird diese aktiviert und die Funktion „mlfhTimer“ nach dem vordefinierten Intervall über „Application.OnTime()“ aufgerufen. Wenn ja, wird die Aktualisierung durch die Angabe des Parameters „Schedule“ in der Funktion „OnTime()“ beim nächsten Aufruf von „mlfhTimer()“ deaktiviert. Zusätzlich werden pro Fall der Text der Schaltfläche geändert und in eine Zelle der aktuelle Status geschrieben. Die Funktion „mlfpUpdateReset()“ dient nur zum Zurücksetzen dieser Werte. Dies geschieht bei jedem Öffnen der Datei.

Schauen wir uns mal die Funktion „mlfhTimer()“ an. Zunächst wird die Eigenschaft „Fill“ vom Rechteck abgefragt, indem ein „FillFormat“ Objekt auf diese referenziert wird. Anschließend kann über die Methode „UserPicture()“ relativ einfach ein neues Hintergrundbild für das Rechteck festgelegt werden. In unserem Fall ist dies dann einfach der erneute Aufruf der URL.

Excel Dynamic Image

Obige Abbildung zeigt dies beispielhaft an einer solchen URL. Ausserdem prüft die Funktion „mlfhTimer()“ auch, ob die automatische Aktualisierung aktiv ist; wenn ja, dann ruft sich „mlfhTimer()“ wieder selbst nach dem vordefinierten Intervall auf. Abschließend blieb nur noch der Schaltfläche das Makro „mlfpUpdate()“ zuzuweisen. Beachten Sie bitte, dass Sie zum Testen der Mappe eine passende URL in die Zelle E5 eintragen müssen; eine Validierung findet nicht statt.

Dieser Artikel wurde auch in der englischen Verson vom Excel Ticker publiziert.

 
Comments

Genau das habe ich gesucht. Vielen Dank.

Hallo, freut‘ mich, dass das Tool Dir geholfen hat. Gruß :-)

Trackbacks for this post