schauan (Andre Schau)
20.Februar 2011
Downloads-Power

htm2xls (Web-Tabelle -> Excel-Tabelle)

lauffähig in Excel 2000 - 2003 htm2xls.xla und ab 2007 htm2xls.xlam

... und noch ein einfaches Tool zur Tabellendarstellung im Web

Die Anwendung htm2xls dient der Rückwandlung von im Internet dargestellten Exceltabellen, z.B. Forumsbeiträgen in „normale“ Exceltabellen.
Beim einfachen Kopieren und Einfügen der Daten (Werte, Formeln, Formatierungen etc.) werden zwar Tabellenbereiche mit diesen Daten gefüllt, aber eine funktionelle Übernahme der Daten erfolgt nicht.
Mittels htm2xls wird nun ein großer Teil dieser Informationen funktionell zugeordnet. Blätter werden erzeugt, Tabellenbereiche werden an die betreffende Stelle eingefügt, Daten und Formeln eingetragen sowie Formate und Gültigkeiten gesetzt.

Anwendung

Begonnen wird mit dem Einfügen der Daten linksbündig (Spalte A) in ein beliebiges Blatt (ohne andere Daten) Das kann manuell oder mit Hilfe der Anwendung erfolgen.
Dazu zuerst auf den neuen Button „HTML-> Tabelle“ in der Symbolleiste bzw. Reiter Add-Ins drücken. Sofern die Daten bereits manuell eingefügt wurden und auf dem zu erzeugenden Blatt Formeln auf andere Blätter enthalten sind, erscheint zuerst eine entsprechende Meldung und dann der Dialog – siehe weiter unten, Dialogbeschreibung, Blatt Start.
Dort per Button Daten einfügen und / oder Daten umwandeln, und fertig...
Die eingefügten Daten werden analysiert, festgestellte Bereiche und ausgewählte Daten in einem Dialog angezeigt. Bei Bedarf können die Bereiche in den Feldern entfernt, manuell neu gesetzt oder automatisch neu durchsucht werden.

So, eigentlich könnte ich hier mit der Beschreibung – oder der Anwender mit lesen -aufhören.

Der Rest ist für besonders interessierte Anwender oder zur Fehleranalyse …

Für besonders interessierte Anwender ;-)

Es gibt für jeden Part wie Daten, Formeln, bedingte Formatierungen usw. je eine RefEdit-Box, wo der jeweilige in der Analyse gefundene Bereich eingetragen wird. Die Bereiche können auch manuell ausgewählt werden.
Kennzeichnend für die Bereiche sind die typischen Überschriften der jeweiligen Anwendung. Sollten sich in neueren Versionen der bekannten Anwendungen oder in anderen Anwendungen abweichende Überschriften ergeben, können die betreffenden Bereiche manuell ausgewählt werden. Voraussetzung für eine korrekte und funktionierende Übertragung ist aber, dass die Datenstrukturen mit einer bekannten Form vergleichbar sind, z.B. erste Spalte Zelladressen, zweite Spalte Formel usw. Nach unten begrenzt wird der jeweilige Bereich durch die ersten leere Zelle nach dem Beginn der Daten- oder Adressbereiche oder neue Überschriften.
Verschiedene Aktionen und Fehler werden auf dem Blatt LOG des Dialogs protokolliert. Am Ende der Ausführung erscheint eine entsprechende Meldung.
Die angelegten Blätter werden am Ende nicht automatisch wieder gelöscht. Wer speichert, hat ir-gendwann recht viele Blätter zusammen.

Dialogbeschreibung

Blatt Start

Blatt Start

Zu Beginn erscheint die Seite „Start“ des Dialog mit einigen Hinweisen zur Anwendung und 3 Buttons für die wichtigsten Aktionen.

Buttons auf dem Blatt Start:

Daten einfügen: Daten können mit diesem Button eingefügt werden. Es erscheint ein zusätzlicher Dialog mit Fragen bzw. Optionen für den Einfügeort.
Daten umwandeln: Die Makros rasseln es los und erledigen alle Aktionen in der nachfolgend aufge-führten Reihenfolge.
Abbrechen: Tja, das erklärt sich wohl von selbst.

Zusatzdialog für Einfügeort:

Blatt Start

Optionen auf dem Blatt Start:

Von Originalwerten abweichende Formelergebnisse ersetzen:
Hier wird gesteuert, ob „normale“ abweichende Ergebnisse zu einem Ersatz der Formel durch den geposteten Wert ersetzt werden sollen. Das wäre von Vorteil, wenn eine identische Darstellung bzw. identische Ergebnisse erreicht werden sollen.
Abweichungen können z.B. entstehen, wenn Quelldaten fehlen (fehlende Dateien, fehlende Daten auf anderen Blättern, unvollständige Datenbereiche …). Nachteil ist, dass z.B. auch die Formel =HEUTE() oder eine Formel mit einem solchen Teil ersetzt wird – heute ist meist nicht mehr der gleiche Tag wie im geposteten Beitrag.

Fehlerwerte bei Formelergebnissen mit Originalwerten ersetzen:
Hier wird gesteuert, ob Fehlerwerte durch Originalwerte ersetzt werden sollen.
Fehlerwerte können z.B. entstehen, wenn auf Grund fehlender Quelldaten (fehlende Dateien, fehlende Daten auf anderen Blättern …) Fehler hervorgerufen werden.

Blatt Bereiche

Blatt Start

Benutzter Bereich: benutzter Bereich des Blattes
Button „Bereiche für …“ erneut Suchen:
Nach Änderung des benutzten Bereiches kann der resultierende Bereich erneut durchsucht werden, z.B., um einen zweiten Tabellenbereich zu definieren. Dadurch können sich Änderungen in den folgenden Feldern ergeben. Um zwei getrennte Datenbereiche korrekt zu analysieren, müssen beide Bereiche genau eingegrenzt und nacheinander verarbeitet werden, z.B. A1:A52 und A53:A101. Ansonsten kann es zu Vermischungen der „Bereiche für …“ kommen, da bei der Suche der komplette Bereich bis zur ersten Fundstelle des jeweiligen Bereiches durchsucht wird.
Datenblattname: Zelladresse des Tabellennamens
Falls kein Name gefunden wurde, steht hier die erste Zelle des Bereiches. In diesem Fall wird der Name htm2xls eingesetzt.
Datenbereich: Tabellenbereich mit den Daten
Hierbei handelt es sich nur um Werte. Ohne weitere Informationen kann hier noch nicht entschieden werden, um was für Daten es sich handelt. Das Wort „Dienstag“ kann z.B. ein Text oder ein formatiertes Datum sein … Übertragen werden auch die sichtbaren Formate, also Zellhintergründe, Schriftfarbe und -größe, usw.
Formeln: Bereich mit den Formeleintragungen
Je nach Variante – Jeanie3, 4, Tab2HTML usw. - werden die Formeln in einer oder mehreren Spalten dargestellt.
Bedingte Formatierung: Bereich mit Eintragung der Bedingungen
Gültigkeit: Bereich mit Eintragung der Gültigkeiten
Namen in Formeln: Bereich mit Eintragung der Namen
Schriftart: Bereich mit Eintragung der Fonts
Format: Bereich mit Eintragung der Formate

Bei Formaten kommen einige ohne Formatangaben nicht exakt. Ursache ist die falsche Übernahme aus der Website. Beispiel Postleitzahlen. Hier steht im Web 00000 und im Excelblatt nur noch 0. Man muss ohne Formatangaben prüfen, ob die Daten im Excel mit der Site übereinstimmen.
Füllfarbe, Rahmen und verbundene Zellen zind Zusatzinformationen, die derzeit (03.07.2009) nur in der Internetdarstellung von Beverly’s Tool erfaßt werden. Eine Rückwandlung erfolgt im Moment noch nicht.

Blatt Blätter

Sofern im analysierten Bereich Bezüge auf andere Blätter enthalten sind, erscheint zuerst ein Hinweis:

Blatt Start

Dialog:

Blatt Start

Datenblattname: Zielblattname
Hier wird der erkannte Zielblattname eingetragen. Sollte kein Name erkannt werden, wird as_konvert eingetragen. Der Name kann gändert werden.
Listboxeintrag „Blatt“ ändern: Eintrag ändern und übernehmen
Per Doppelklick auf einen Eintrag der Listbox kann ein Eintrag übernommen und hier geändert wer-den. Mittels Leereintrag kann der Blattname gelöscht werden.
Button „Änderungen übernehmen“: Änderungen werden in die Listbox zurückgeschrieben. Führende und schließende Leerzeichen werden dabei entfernt !
Um eine erneute Auswahl der Listbox zu ermöglichen, muss entweder die Änderung übernommen oder ins Userform oder die Listbox geklickt werden. Dadurch wird der „Änderungszustand“ beendet.
Durch Eintrag in der Textbox kann ein neuer Eintrag in der Listbox erzeugt werden. Dazu ist nach der Eingabe ebenfalls der Button „Änderungen übernehmen“ zu betätigen.
Listbox: Liste der Formeln und Namen
Hier werden in Formeln und Namen erkannte Tabellenblätter gelistet. Im Fall externer Tabellen werden auch Laufwerk, Pfad und Dateiname aufgelistet. Zusätzlich wird ein eventueller Formelrest eingetragen, der bei mehreren Tabellennamen in einer Fo Zielblattname rmel nach einer Fundstelle zur weiteren Analyse übrig bleibt .
Die Spaltenbreite der Listbox wird variabel entsprechend der Datenmenge angepasst. Bei innerhalb INDIREKT aus variablen Teilen zusammengesetzte Tabellennamen werden nicht erkannt, es werden Zelladressen und andere Bestandteile eingetragen.
Die Einträge der Listbox kommen in der gleichen Anzahl, wie Fundstellen in den Daten auftreten. Mit Fundstellen ist jeder Treffer in allen Formeln usw. gemeint. Geht eine Formel zwei mal auf ein Tabellenblatt, sind das zwei Treffer.
Später werden im Makro die markierten Einträge verarbeitet und die Pfade, Dateien und Blätter angelegt. Im Gegensatz zu den Einträgen der Listbox nicht öfter, als nötig.
gewählte Blätter aus Listbox anlegen: Optionsfeld
Da die Blattanalyse zum Teil noch falsche Ergebnisse bringt, kann hier entschieden werden, ob die angezeigten und gewählten Blätter angelegt werden sollen. Das Datenblatt wird unabhängig von dieser Option angelegt.

Blatt LOG

Blatt Start

Hier werden einige Meldungen aus den Makros angezeigt. Das ist zum Teil nur zur Fehleranalyse zu gebrauchen, zum Teil sieht man Aktionen wie das Löschen vorhandener Namen …

Reihenfolge der Datenverarbeitung

1. Blätter anlegen
nur intern, externe Blätter werden nicht angelegt
Die Blätter werden vorher geleert (Cells.Clear), eine entsprechende Meldung / Abfrage erscheint .
Wird kein Name für das Datenblatt gefunden und angegeben, wird standardmäßig ein Blatt htm2xls angelegt. Die angelegten Blätter werden am Ende nicht automatisch wieder gelöscht. Wer speichert, hat irgendwann recht viele Blätter zusammen
2. Datentabelle übernehmen
die Daten aus dem entsprechenden Bereich werden übernommen und entsprechend der Zeilen- und
Spaltenangaben eingetragen.
3. Namen erstellen
vorher werden alle in der aktiven Mappe enthaltenen Namen – nach entsprechender Abfrage - gelöscht
4. Formate eintragen
5. Fonts eintragen
6. Formeln übernehmen
Bei Unterschieden zu den Daten aus dem Datenbereich werden optional die Daten übernommen und die Formeln in Kommentare ín den entsprechenden Zellen geschrieben.
Bei langen Arrayformeln wird auf das Zielblatt gewechselt und die Formel mit Sendkeys eingetragen bzw. umgewandelt. Während dieser Aktion sollte keine andere Maus- oder Tastaturaktivität erfolgen!
7. Gültigkeiten
8. Bedingte Formatierungen

Blattnamensanalyse in INDIREKT – und anderen Funktionen:

Die Umsetzung einer 100%ig richtigen Analyse wird aufwändig, da man damit rechnen muss, dass die die Blattnamen mit verschachtelten Formeln usw. erstellt werden...
z.B.
'=INDIREKT(INDIREKT(ADRESSE(ZEILE() + 1; SPALTE(B1))) & "bell" & $B3 & "!A1")+13
'=INDIREKT(INDIREKT("$B" & ZEILE() + 1) & "bell" & $B3 & "!A1")+13
wobei es noch deutlich komplexer werden kann. Zusätzlich erschwert wird die Analyse durch Sonderzeichen wie Klammern, Apostrophe, Operatoren usw. in den Blattnamen.
Daher kann es vorkommen, dass in der Listbox statt der Tabellennamen Formelbestandteile als Tabellenblattname ausgegeben und bei der späteren Verarbeitung als Tabelle angelegt werden.
Downloads-Power