hb-EXCEL-Logo

 

Webseite für Turnier erstellen

Aktueller Turnierverlauf
auf eigener Webseite

Englische Flagge   Deutsche Flagge

Webseite zuletzt aktualisiert: 30.06.2025

Download

Excel-Dateien herunterladen  (Version 1.5  vom 30.06.2025)
Download .zip
Turnier-Webseite herunterladen  (Version 1.2  vom 22.06.2025)
Download .zip
  • Kostenlos
  • Keine lästige Werbung
  • Kein Passwortschutz für den VBA-Code
  • Keine versteckten Tabellenblätter
  • Alles frei einsehbar und veränderbar

Optional:
Refresh-Intervall der Webseite verändern

Momentan wird die Webseite alle 30 Sekunden aufgefrischt. Das bedeutet, dass nach einem Klick auf einen der Aktualisierungsbuttons in der Datei TurnierUploads.xlsm spätestens nach 30 Sekunden die Webseite automatisch aktualisiert wird.

Hier ist während des Turniers sicherlich auch ein größeres Zeitintervall (z.B. 60 s) ausreichend. Wer dieses Zeitintervall ändern möchte, findet den Wert für das Refresh-Intervall am Ende der Datei „index.html“:

Tipps

1.
Wenn die Besucher der Webseite während der Vorrunde nur die Titelzeilen, die Spielergebnisse und die Gruppentabellen der Vorrunde sehen sollen, kann man im Ordner „TurnierAktuell/pics/“ die letzten beiden Bilder „tmp3.gif“ und „tmp4.gif“ löschen.

Diese beiden Bilder werden erst dann wieder neu erzeugt, wenn man (zu Beginn der Endrunde) die Buttons „Endrunde aktualisieren“ und „Schlusstabelle aktualisieren“ klickt.

 

2.
Die Kennung in Zelle D40 steht deshalb so weit unten, weil sie sich nicht im sichtbaren Bereich des Bildschirms befinden soll. Damit soll verhindert werden, dass ein Neugieriger beim Über-Die-Schulter-Schauen die Kennung lesen oder fotografieren kann.

Zusätzlich kann man die Kennung in Zelle D40 durch die benutzerdefinierte Formatierung ";;;" unsichtbar machen.

 

3.
Selbstverständlich kann man an Stelle dieser einfach gehaltenen Webseite auch eine eigene Webseite erstellen. Man braucht nur an irgendwelchen Stellen die Bilder „tmp0.gif“, „tmp1.gif“, „tmp2.gif“, usw. einzufügen - fertig.

Die Excel-Datei „TurnierUploads.xlsm“ macht nichts weiter, als diese Bilddateien zu aktualisieren, indem sie per HTTP-Request die neuen Bilder auf den Server hochlädt. Die Webseite muss nur einen Automatismus haben, sich selber in regelmäßigen Abständen aufzufrischen.

Hinweis zur Sicherheit

Da hier Bilder zu einem Server hochgeladen werden, stellt sich die Frage nach der Sicherheit. Im Zusammenhang mit dem Upload von Bildern liest man immer wieder, dass Hacker möglicherweise über diesen Upload bösartigen Code einschleusen und die Webseite beschädigen können.

Dies geschieht meistens in den Fällen, wo die Bilder über einen sog. GET-Request gesendet werden, weil man dabei die URL sehen (und manipulieren) kann, mit der die Upload-Anfrage an den Server gestellt wird.

Bei dieser Turnierplan-Webseite versendet die Excel-Datei "TurnierUploads.xlsm" keine GET-Requests, sondern POST-Requests. Damit liegt die Hürde für das Hacken schon sehr hoch.

Als weitere Sicherheitsvorkehrung wird eine Bilddatei nicht auf die übliche Weise zum Server gesendet (kein Multipart-Request), sondern vorher mit einer Kennung versehen. Kommt am Server etwas ohne diese Kennung an, wird es nicht auf dem Server gespeichert, sondern verworfen.

Wer noch mehr Sicherheit möchte, kann zusätzlich die Datei 'ups.php' umbenennen, beispielsweise in 'U410z_oq55_zWw.php'.
Im VBA-Code muss dann die URL entsprechend angepasst werden.

Technischer Hintergrund

Der VBA-Code der Excel-Datei 'TurnierUploads.xlsm' greift auf den Excel-Turnierplan zu und liest dort bestimmte Bereiche (Ergebnis-Tabellen des Turnierplans) aus.

Die Aktualisierung der Webseite geschieht dann in folgenden Schritten:

  1. Die Copy-Methode des Range-Objekts kopiert den gewünschten Bereich des Turnierplans in die Zwischenablage.
  2. Die Add-Methode der ChartObjects-Auflistung erzeugt ein Chart-Object mit passender Größe.
  3. Der Inhalt der Zwischenablage wird mit der Paste-Methode des Chart-Objekts in die Chart-Area eingefügt.
  4. Die Export-Methode des Chart-Objekts speichert das Chart in eine temporäre GIF-Datei.
  5. Das Chart wird wieder gelöscht.
  6. Es wird ein ADODB.Stream-Objekt erzeugt, welches die GIF-Datei ausliest und in einen binären Stream umwandelt.
  7. Es wird ein MSXML2.DOMDocument-Objekt erzeugt.
  8. Die createElement-Methode dieses MSXML2.DOMDocument-Objekts erzeugt ein Knotenelement vom Typ 'bin.base64'.
  9. Der binäre Stream wird in dieses Knotenelement eingelesen und dadurch ins Base64-Format umgewandelt.
  10. Dieser Base64-Stream wird aus Sicherheitsgründen mit einer geheimen Kennung versehen. Außerdem wird dem Base64-Stream eine Kennzahl hinzugefügt, an der der Server erkennen kann, welches der Bilder auf der Webseite aktualisiert werden soll.
  11. Der Base64-Stream wird per POST-Request an den Server gesendet. Dazu wird ein MSXML2.XMLHTTP.6.0-Objekt erzeugt, welches den HTTP-Request an den Server ermöglicht.
  12. Auf dem Server wird geprüft, ob die richtige Kennung im Base64-Stream enthalten ist. Wenn ja, wird der Base64-Stream als Bilddatei gespeichert. Ansonsten werden die empfangenen Daten verworfen.
  13. Die Turnier-Webseite, die jemand in seinem Internet-Browser betrachtet, enthält einen Javascript-Code, der in regelmäßigen Abständen, z.B. alle 30 Sekunden, die (aktualisierten) Bilddateien vom Server nachlädt. Insofern wird eine Änderung an den Ergebnissen oder Tabellen spätestens nach 30 Sekunden im Browser des Betrachters sichtbar.

Ornament