Vornweg -> Ich besitze lediglich rudimentäre Kenntnisse zu VBA
Mein Ziel -> Ich möchte ein Fach aus einem Online-Stundenplan in Excel einlesen. Dieser ist sehr verschachtelt. D.h. es sind mehrere Tabellen in Tabellen (siehe URL: https://www.hafl.bfh.ch/fileadmin/stundenplaene/hs/P3/f/f00001.htm). Ich habe versucht den Inhalt einzelner Tabellen, Tabellenzeilen und Tabellenobjekte auszulesen(
). Dies hat funktionniert, nur leider ist die Tabelle sehr kompliziert organisiert. Es gibt nicht wirklich eine Logik wo man sagen kann dass z.B. jeweils in der 3. Zeile eine neue Stunde anfängt. Der HTML-code ist jedoch glückicherweise so, dass jedes Fach eine Farbe hat (bgcolor=). Meine Frage -> Wie kann ich in dem HTML-Dokument genau nach diesem Begriff suchen, die Tabelle wo er drinsteht einlesen und in der HTML-Tabelle einer Zeit zuordnen? Ich hoffe ich habe mich verständlich ausgedrückt Vielen Dank im Voraus und Gruss Hier mein VBA-Script: Option Explicit
P.S.: das Script gibt einen Laufzeitfehler 91 aus. Ich verstehe leider auch nicht ganz warum..
HTML sehr wirr
Michael
Hi Mirco, ich habe mir das Original mal angesehen: der HTML-Code ist ziemlich wirr; alleine die Werte auszulesen bringt eigentlich nichts, weil die Position innerhalb der Tabelle entscheidend für die Zuweisung von Wochentag & Zeit ist. D.h., man müßte die ganze Table-Arithmetik (mit den ganzen col- & rowspans) auswerten. Machbar ist ja immer alles; die Frage ist nur, mit welchem Aufwand. Wenn es Dir darum geht, einen Stundenplan mit Deinen eigenen Kursen zu erstellen, ist es wahrscheinlich schneller händisch erledigt als programmiert. Hm, hm. Lies die Pläne mal damit ein (Makro in ein allg. Modul, z.B. Modul1, das sind die Dinger, die automatisch erzeugt werden, wenn Du den Makrorekorder benutzt):
Es kopiert die komplette Tabellenstruktur in das gerade aktive Tabellenblatt, schreibt die Formel = Anzahl2 in die Zeile 2, die ermittelt, ob in der Spalte Daten stehen, und löscht selbige, wenn nichts vorhanden ist. Du hast ja zwei unterschiedliche Links angegeben; der im Makro erzeugt eine einzelne Tabelle, der andere drei untereinander. Jedenfalls stellt Dir das Makro eine "geraffte" Ansicht zur Verfügung, die sich innerhalb von Excel sicher leichter auswerten läßt als das eklige HTML. Wenn Du genau beschreibst, wie die Ausgabe aussehen soll, wird sich's mit vertretbarem Aufwand machen lassen. Schöne Grüße, Michael P.S.: Das Makro verwendet die Zwischenablage, die nicht ohne Weiteres funktioniert (Infos dazu im eingestreuten link auf online-Excel). Damit Du damit keinen Ärger hast, anbei doch eine Datei mit leicht geändertem Makro: https://www.herber.de/bbs/user/110564.xlsm
AW: HTML sehr wirr
Mirco
Hallo Michael Vielen Dank für deine super Antwort! Die HTML-Tabelle ist wirklich sehr wirr. Wahrscheinlich ist aus diesem Grund unsere Schule nicht fähig, benutzerdefinierte Stundenpläne zu generieren. Ich finde den Ansatz aber sehr gut von dir, erst einmal alle Stundenpläne in Excel zu integrieren und anschliessend zu bearbeiten (auch wenn ich den code nicht vollständig lesen kann). Ich versuche mal etwas zu schreiben, das die integrierten Pläne bearbeitet und werde bestimmt bald weitere Fragen posten! ;-) Gruss Mirco
AW: HTML sehr wirr
Michael
Hi Mirco, ich sehe grad, daß die Forumssoftware ein paar Zeilen verhackstückt hat, z.B.
Das liegt wohl an den enthaltenen ">" usw. Wenn Du mir mitteilst, was Du nicht verstehst, erkläre ich's Dir gerne. Happy Exceling, Michael
AW: HTML sehr wirr
Mirco
Hallo Michael Den folgenden Part begreife ich nicht ganz. Man zählt zuerst von links bis das gesuchte Element vorkommt, dann von rechts. Aber was macht man dann mit diesen Zahlen?
|
Ich habe jetzt versucht alle Stundenpläne die aus dem Internet gesogen wurden zusammenzufügen und ein bisschen schön zu machen. Dies ging nicht schlecht. Nur weiss ich noch nicht ganz wie ich es mit den Überschneidungen regeln soll.
Ein weiterer Punkt ist jedoch die automatische Generierung der links. Dazu müssten die "Elemente" von diesem Frame geladen werden: https://www.hafl.bfh.ch/fileadmin/stundenplaene/hs/frames/navbar.htm
Ich weiss nicht genau wie ich dieses Frame ansteuern soll. Es ist ja keine id vorhanden. Und auch wenn sie vorhanden wäre: wie kriegt man alle Elemente aus option /option heraus?
Hier das File, wie es jetzt steht https://www.herber.de/bbs/user/110695.xlsm
Vielen Dank nochmals für deine kompetente Hilfe!
Gruss Mirco