Bedienungsanleitung für das Excel-Makro add_to_contents

Kurzbeschreibung

Mit den Excel-Makros add_to_contents und restore_contents_table können Sie ein Inhaltsverzeichnis für Excel-Dateien erzeugen. Damit können Sie sehr schnell die gewünschten Stellen in Ihren Dateien finden und sich, besonders bei großen Dateien, viel Zeit ersparen, weil Sie viel weniger blättern müssen.
add_to_contents: Füge die ausgewählte Zelle zum Inhaltsverzeichnis hinzu.
restore_contents_table: Füge Zellen mit Zell-Namen zum Inhaltsverzeichnis hinzu.
Beispiel:

 

Inhaltsverzeichnis

Kurzbeschreibung

Inhaltsverzeichnis

Einführung

Installation

Benutzung des Makros

Benutzung des Inhaltsverzeichnisses

Suchen einer bestimmten Stelle in der Datei

Ungültige Verweise

Arbeiten mit 2 Fenstern

Löschen von Einträgen

Verändern der Excel-Daten

Einstellungen

Allgemeine Parameter

WS_CONTENT_NAME

START_ROW, START_COLUMN

SORTING

ADD_WORKSHEET_NAME

DIFFERENT_COLUMNS_FOR_EACH_WORKSHEET

ADD_NAME_FOR_THE_CELL

Zählername

Inhaltsname

Zellname

ADD_WS_TO_CELL_NAME

USE_NAME_FOR_REFERENCING

TEXT_TO_DISPLAY

AVOID_DOUBLETS

MARK_CELL

Font-Parameter

BACKGROUND_COLOR

FONT_COLOR

FONT_NAME

FONT_SIZE

FONT_UNDERLINED

Was geht nicht?

Inhaltsverzeichnisse aus verschiedenen Dateien

Verschiedene Kategorien für Überschriften

Makro restore_contents_table

Versionshistorie

Downloads

Copyright

Haftungsausschluß

 

Einführung

 

Während es in Microsoft Word (und anderen Textverarbeitungsprogrammen) eine eigene Funktion gibt, mit der man sehr einfach ein komplettes Inhaltsverzeichnis erstellen kann, gibt es diese Funktion in Excel nicht. Warum? Zunächst gibt es in Excel nicht einmal die Möglichkeit, bestimmte Zellen als Überschriften zu definieren, aus denen dann ein Inhaltsverzeichnis erstellt werden könnte. Das könnte man zwar leicht ändern, aber dann bleiben noch andere Probleme. Eine Word-Datei ist in der Regel (Ausnahmen sind z.B. Tabellen) ein lineares Dokument, was bedeutet, daß die Reihenfolge der enthaltenen Objekte (Worte, Graphiken, …) eindeutig von oben nach unten festgelegt ist. Nur dann kann man ein wohlgeordnetes Inhaltsverzeichnis im üblichen Sinn erstellen.

 

Bei Excel hingegen sind die Daten (Texte und Zahlen) in Zellen enthalten, die von oben nach unten, aber auch von links nach rechts organisiert sind. Außerdem gibt es in Excel-Dateien oft auch noch verschiedene Arbeitsblätter. Daraus ein Inhaltsverzeichnis zu erstellen, war für die Microsoft-Programmierer anscheinend zu schwierig. Um diesen Nachteil zu kompensieren, habe ich dieses Makro geschrieben, mit dem man Inhaltsverzeichnisse erstellen kann, die so aussehen:

 

 

Die Datei ist ein einfaches Kassenbuch für eine Familie, die ihre Einnahmen und Ausgaben buchführen möchte. Für jedes Familienmitglied und für die Familie als Ganzes gibt es ein eigenes Arbeitsblatt. Das Inhaltsverzeichnis wird so erstellt (diese Einstellungen lassen sich anpassen, siehe unten):

 

Installation

Wie das Makro installiert und sinnvollerweise eine Tastaturkombination zum Start des Makros definiert wird, steht auf meiner Seite Excel Makros.

Benutzung des Makros

Markieren Sie die Zelle, die Sie ins Inhaltsverzeichnis einfügen möchten und starten Sie das Makro. Damit wird die markierte Zelle ins Inhaltsverzeichnis aufgenommen. So einfach ist es (nur eine Tastenkombination drücken).

 

Wenn Sie mehrere Zellen markieren, werden alle markierten Zellen ins Inhaltsverzeichnis aufgenommen.

 

Wie das Inhaltsverzeichnis aussehen soll, können Sie selbst bestimmen (siehe Einstellungen).

 

Vielleicht brauchen Sie die Hilfe eines Experten, um das Makro zu installieren und die Einstellungen vorzunehmen. Danach ist die Benutzung aber sehr einfach!

Benutzung des Inhaltsverzeichnisses

Suchen einer bestimmten Stelle in der Datei

Natürlich können Sie das Inhaltsverzeichnis ausdrucken. Die wichtigste Funktion dürfte aber sein, daß sie sehr schnell zu einer bestimmten Stelle in der Datei springen können, indem Sie einen Eintrag anklicken. Wenn Sie große Dateien mit vielen Arbeitsblättern und vielen Zeilen und Spalten haben, können Sie sich damit viel Scroll-Arbeit ersparen.

 

Ungültige Verweise

Wenn Sie im Inhaltsverzeichnis einen Eintrag anklicken und Excel zeigt Ihnen die Meldung an, daß der Verweis ungültig ist,

 

 

dann kann dies daran liegen, daß Sie die Zelle, auf die der Eintrag verweist, gelöscht wurde. Denn mit dem Löschen einer Zelle löscht Excel automatisch auch den Namen dieser Zelle und findet ihn hinterher natürlich nicht mehr. Solche Einträge sollten aus dem Inhaltsverzeichnis entfernt werden.

 

Arbeiten mit 2 Fenstern

Dies ist ein Tip für besonders rationelles Arbeiten. Angenommen Sie möchten Ihr Haushaltsbuch aktualisieren und haben eine Liste von Einnahmen und Ausgaben einzutragen. Öffnen Sie ein zweites Fenster, indem Sie in der Excel-Menüleiste unter Fenster den Eintrag Neues Fenster auswählen. Dann erzeugt Excel ein 2. Fenster zur Anzeige derselben Datei. (Sie sehen dies daran, daß Excel dann hinter dem Dateinamen noch :2 und :1 anzeigt.) Ordnen Sie die Fenster nebeneinander oder übereinander an und lassen Sie sich im zweiten Fenster das Inhaltsverzeichnis anzeigen. Wenn Sie nun auf einen Eintrag klicken, springt das erste Fenster an diese Stelle und das zweite Fenster zeigt unverändert das Inhaltsverzeichnis an. Dies erspart das lästige Blättern und Auswählen der einzelnen Arbeitsblätter.

 

 

 

 

Löschen von Einträgen

Wenn Sie einen Eintrag aus dem Inhaltsverzeichnis löschen möchten, können Sie einfach diese Zelle löschen. Bitte beachten Sie, daß in der Spalte mit den Inhaltsverzeichnissen aber keine leeren Zellen übrigbleiben, da eine leere Zelle dem Makro mitteilt, daß die Liste dort zu Ende ist. Neue Einträge fürs Inhaltsverzeichnis würden dann möglicherweise an einer falschen Stelle eingefügt. Deshalb ist es wichtig, daß Sie nicht nur den Inhalt der Zelle löschen, sondern die Zelle selbst. Dann werden Sie von Excel gefragt, was mit den anderen Zellen passieren soll. Dort wählen Sie aus, daß die Zellen nach oben verschoben werden. Dadurch wird die entstehende Lücke aufgefüllt.

 

Beachten Sie ferner, daß durch das Löschen eines Eintrags im Inhaltsverzeichnis die Formatierung der Zelle, auf die verwiesen wurde, nicht verändert wird. Prinzipiell wäre es schon möglich, ein Makro zu schreiben, das Einträge aus dem Inhaltsverzeichnis wieder entfernt, aber dieses Makro würde auch nicht wissen, wie die Formatierung der betreffenden Zelle vor der Aufnahme ins Inhaltsverzeichnis war. Deshalb ist dies eher eine Aufgabe für die intelligenten Excel-Benutzer.

 

Verändern der Excel-Daten

Natürlich werden Sie auch nach dem Erstellen eines Inhaltsverzeichnisses die Daten in der Excel-Datei verändern wollen. Dabei ist einiges zu beachten:

Einstellungen

Um die Gestaltung des Inhaltsverzeichnisses für unterschiedliche Zwecke flexibel zu machen, enthält das Makro (bzw. die Datei über dem Makro) einige Const-Parameter, die auch eine Laie ohne Programmierkenntnisse verändern kann. Die Funktion und möglichen Werte dieser Parameter werden hier erklärt. Um an diese Parameter zu kommen, müssen Sie den Quellcode des Makros öffnen. Das geht, wenn man in der Liste der Makros (Alt-F8, wenn das nicht funktioniert, haben Sie keine Lizenz für Visual Basic) das gewünschte Makro einmal anklickt (nicht doppelt, weil es dann sofort gestartet wird) und dann die Schaltfläche Bearbeiten auswählt.

Möglicherweise ist es sinnvoll vor dem Verändern dieser Parameter eine Kopie derselben in einer einfachen Textdatei abzuspeichern! Sie können auch mit Kommentaren arbeiten. Kopieren Sie eine Zeile, die Sie verändern möchten. Dann machen Sie am Beginn der Originalzeile ein „’“. Dadurch wird diese Zeile vom Programm ignoriert. Dann können Sie die kopierte Zeile entsprechend Ihren Wünschen ändern und alles testen. Wenn es gut funktioniert, sollten Sie das Makro abspeichern, indem Sie im Editor das Speichern-Symbol anklicken.

Allgemeine Parameter

WS_CONTENT_NAME

Bei diesem Parameter gibt man in doppelten Anführungszeichen den Namen des Arbeitsblattes an, in den das Inhaltsverzeichnis geschrieben werden soll. Wenn dieses Arbeitsblatt nicht existiert, wird es beim ersten Aufruf des Makros neu erzeugt. Wenn das Makro aufgerufen wird, schaut es nach, ob die Zelle links oben (Zeile 1, Spalte A) einen Kommentar hat. Wenn nicht, wird ein solcher hinzugefügt und darin wird jeweils eine Zahl gespeichert, die vom Makro zur Erzeugung der Namen für die Zellen verwendet wird. Bitte ändern Sie an diesem Kommentar nichts, es sei denn Sie haben vollständig verstanden, was dann passiert.

 

Wenn Sie möchten, können Sie in dem Arbeitsblatt mit dem Inhaltsverzeichnis auch andere Daten speichern. Diese Daten sollten sich aber nie mit den Daten des Inhaltsverzeichnissees überlappen! Wenn das Makro einen neuen Eintrag erstellt, schiebt es bisweilen alle Zellen einer Spalte unterhalb des Einfügeplatzes eine Reihe nach unten. Das könnte die Ordnung Ihrer Daten unterhalb von START_ROW zerstören!

 

Gibt man hierfür ACTUAL_WORKSHEET ein, so wird das Inhaltsverzeichnis für jedes Arbeitsblatt oben in das Arbeitsblatt hineingeschrieben. In diesem Fall müssen Sie selbst dafür sorgen, daß in diesem Arbeitsblatt oben genügend freier Platz ist.

START_ROW, START_COLUMN

START_ROW ist die Zeilennummer, ab der die Hyperlinks ins Inhaltsverzeichnis geschrieben werden. Wenn eine Spaltenüberschrift erzeugt wird, wird diese über dieser Zeile eingefügt, und START_ROW muß mindestens 2 sein. Die Obergrenze hängt von der Excel-Version ab.

 

START_COLUMN ist die Spaltennummer, ab der die Hyperlinks ins Inhaltsverzeichnis geschrieben werden. START_ROW muß mindestens 1 sein. Die Obergrenze hängt von der Excel-Version ab.

SORTING

Hierfür sind 4 Werte zulässig, die festlegen, wie die Einträge im Inhaltsverzeichnis innerhalb einer Spalte sortiert werden:

ADD_WORKSHEET_NAME

DIFFERENT_COLUMNS_FOR_EACH_WORKSHEET

ADD_NAME_FOR_THE_CELL

Grundsätzlich kann man in Excel einzelnen Zellen oder Zellbereichen Namen zuweisen, um hinterher mit diesen Namen statt den Adressen arbeiten zu können. So kann man z.B. in Formeln statt einer Zelladresse den Namen der Zelle verwenden, wodurch man viel leichter sieht, welche Bedeutung diese Zelle hat. Das Makro nutzt nun diese Möglichkeit, um die Zellen zu markieren, die zum Inhaltsverzeichnis hinzugefügt wurden. Mit dieser Information kann dann das Makro restore_contents_table das komplette Inhaltsverzeichnis neu erstellen, was aber nur funktioniert, wenn hier die Werte 3, 4 oder 5 gewählt wurden. Das kann gelegentlich recht nützlich sein, wenn z.B. viele Zellen gelöscht wurden.

 

Terminologie

Zählername

Ein Zählername ist ein Zellname im Format c_xxxxx, wobei xxxxx eine 5-stellige Zahl ist. Solche Namen werden vom Makro erzeugt.

Inhaltsname

Ein Inhaltsname ist ein Zellname, der mit “c_” (ein kleiner Buchstabe c gefolgt von einem Unterstrich) beginnt. Solche Namen können vom Benutzer verwendet werden, um Zellen zu markieren, die ins Inhaltsverzeichnis aufgenommen werden sollen, da das Makro restore_contents_table diese Namen findet und sie von anderen Zellnamen unterscheiden kann.

Zellname

Ein Zellname ist ein beliebiger Name, der für eine Zelle definiert wurde (vom Benutzer oder Makro).

 

 

ADD_WS_TO_CELL_NAME

Dies ist ein zusätzlicher Parameter für die Bildung des Zellnamens (siehe ADD_NAME_FOR_THE_CELL).

1: Der Name des Arbeitsblattes wird am Beginn des Zellnamens hinzugefügt. Sinnvoll kann dies sein, wenn es sonst in verschiedenen Arbeitsblättern Zellen mit gleichen Namen gäbe.

0: Der Name der Zelle wird ohne den Namen des Arbeitsblattes gebildet.

 

USE_NAME_FOR_REFERENCING

Excel bietet zwei Möglichkeiten, den Verweis zu einer Zelle zu definieren:

TEXT_TO_DISPLAY

Gibt an, welcher Text im Inhaltsverzeichnis für die hinzuzufügende Zelle angezeigt wird.

AVOID_DOUBLETS

MARK_CELL

Zunächst sieht man es den Zellen, die zum Inhaltsverzeichnis hinzugefügt wurden, dies nicht an. Es ist zwar nicht verboten, mehrfache Einträge einer einzelnen Zelle ins Inhaltsverzeichnis hinzuzufügen. In der Regel wird dies aber nicht gewünscht sein. Mit diesem Parameter kann man die Zellen kennzeichnen, die erfolgreich zum Inhaltsverzeichnis hinzugefügt wurden.

Font-Parameter

Die folgenden Parameter werden nur benutzt, wenn MARK_CELL den Wert 2 hat. Wenn irgendeiner dieser Parameter negativ ist, wird die zugehörige Font-Eigenschaft nicht verändert. So ist es möglich, nur die gewünschten Parameter zu ändern, z.B. alle diese Zellen mit einer Hintergrundfarbe zu versehen, aber die Schriftart und –Größe nicht zu verändern.

 

BACKGROUND_COLOR

Dies ist die Hintergrundfarbe der Zelle. Hier sind die Werte der Excel-Farben zu verwenden. Z.B. ergibt 36 ein helles Gelb. Ein negativer Wert ergibt KEINE Änderung.

FONT_COLOR

Dies ist die Farbe für die Schrift. Hier sind die Werte der Excel-Farben zu verwenden. Z.B. ergibt 5 ein intensives Blau. Ein negativer Wert ergibt KEINE Änderung.

FONT_NAME

Dies ist der Name des Fonts (Schriftart) für den Text in der Zelle. Es ist keine Zahl, sondern eine Zeichenkette, die in doppelten Anführungsstrichen eingeschlossen ist. Beispiele sind "Arial", "Times New Roman", "Courier", … Eine leere Zeichenkette "" ergibt KEINE Änderung.

FONT_SIZE

Dies ist die Schriftgröße. Für normale Zellen werden meist 10 oder 12 verwendet. Überschriften werden häufig größer gemacht. Ein negativer Wert ergibt KEINE Änderung.

FONT_UNDERLINED

Legt fest, wie der Zelltext unterstrichen wird. Hier sollten die Excel-Konstanten verwendet werden:

xlUnderlineStyleNone: keine Unterstreichung

xlUnderlineStyleSingle: einfache Unterstreichung

xlUnderlineStyleDouble: doppelte Unterstreichung

 

Was geht nicht?

Sie haben gesehen bzw. gelesen, daß dieses Makro manches kann. Natürlich gäbe es auch noch vieles zu verbessern. Wenn Sie etwas Spezielles benötigen, kann ich das gerne für Sie einbauen, natürlich nicht ohne Gegenleistung.

Inhaltsverzeichnisse aus verschiedenen Dateien

In manchen Fällen wäre es sicher wünschenswert, ein Inhaltsverzeichnis zu erstellen, das mit Zellen in unterschiedlichen Dateien arbeiten kann. Schwierig ist das auch nicht, aber die Realisierung erfordert einigen Aufwand. Denn dann kommt die Verwaltung der Dateien hinzu, die möglicherweise nicht geöffnet sind, vielleicht gar nicht mehr existieren oder nur an einen anderen Ort verschoben wurden.

Verschiedene Kategorien für Überschriften

Um z.B. in Microsoft Word eine Gliederung zu erstellen, werden meist verschiedene Überschriftskategorien (Überschrift 1 für Hauptkapitel, Überschrift 2 …..) verwendet. Das Makro add_to_contents kennt in der aktuellen Version nur eine einzige Überschriftskategorie.

 

Makro restore_contents_table

Mit dem Makro restore_contents_table können Sie ein Inhaltsverzeichnis wiederherstellen. Dies funktioniert nur, wenn Sie den Zellen einen Zellnamenzugewiesen hatten, d.h. Sie hatten für ADD_NAME_FOR_THE_CELL den Wert 3 oder 4 oder 5 verwendet, oder selbst einen Namen dafür definiert. Nach dem Start erscheint zunächst folgende Abfrage:

Das Restore-Makro funktioniert so, daß es alle Zellnamen einliest, die für die aktuelle Excel-Datei definiert sind und bei der Antwort „Ja“ für alle Namen, bei der Antwort „Nein“ nur für die Namen, die einem Inhaltsnamen gleichsehen, das Makro zum Einfügen einer Zelle ins Inhaltverzeichnis aufruft. Wenn Sie zuvor das alte Inhaltsverzeichnis löschen oder in ein anderes Arbeitsblatt verschieben, wird ein ganz neues und aktuelles Inhaltsverzeichnis erstellt. Findet dieses Makro Namen, die ungültig wurden (z.B. weil Zellen gelöscht wurden), so werden diese Namen ignoriert, d.h. es wird kein Eintrag im Inhaltsverzeichnis angelegt.

Das Restore-Makro verwendet alle Einstellungen wie add_to_contents, außer daß für ADD_NAME_FOR_THE_CELL der Wert 0 oder 5 verwendet wird, je nachdem, welche Schaltfläche Sie in dem Meldungsfenster anklicken, das als nächstes erscheint:

Wenn Sie „Ja“ anklicken, werden alle existierenden Zählernamen (aber nicht die Inhaltsnamen oder anderen Namen) gelöscht und durch neue ersetzt. Wenn die alten Zählernamen irgendwie verwendet wurden (z.B. in Formeln oder Verweisen), so entstehen dadurch ungültige Bezüge. Sinnvoll ist „Ja“ nur, wenn Sie die Namen nur in einem Inhaltsverzeichnis verwendet hatten, das Sie vor dem Aufruf des Makros löschen. Dann erhält man hinterher eine neue lückenlose Numerierung. Aus diesem Grund funktioniert hier die Dublettenvermeidung mit AVOID_DOUBLETS = 1 nicht, weil die alten Verweise auf die jeweiligen Zellen ja gar nicht mehr gültig wären. Deshalb ist diese Funktion nur beim Erstellen eines ganz neuen Verzeichnisses sinnvoll.

Für den Normal-Benutzer wird in der Regel „Nein“ besser sein, weil dann nicht soviel geändert wird.

In jedem Fall kann es kaum schaden, vor der Anwendung dieses Makros eine Sicherungskopie der kompletten Excel-Datei anzufertigen.

Im übrigen ist dies eine einfache Möglichkeit, die Formatierung der Zellen zu verändern, die ins Inhaltsverzeichnis aufgenommen wurden, oder die angezeigten Verweis-Texte zu ändern, wenn sich die zugehörigen Zelltexte verändert haben.

Manchmal könnte es nützlich sein, wenn das Makro restore_contents_table auch mit den Zellkommentaren oder dem definierten Format für Inhalts-Zellen arbeiten könnte. Darauf wurde aber bewußt verzichtet, weil die Kommentare und Formate auf Zellebene organisiert sind. weshalb das Makro alle Zellen aller Arbeitsblätter der Arbeitsmappe nach Kommentaren durchsuchen müßte. Außerdem können Kommentare nur verwendet werden, wenn Zellnamen definiert sind. (Dies ist durchaus einer unzureichenden Programmierung zu verdanken und könnte auch geändert werden.)

 

Versionshistorie

Diese Anleitung gehört zur jeweils neuesten Version!

1.0: Erste Version, November 2010

Downloads

Hier finden Sie einige Dateien zum Herunterladen. Bitte beachten Sie, daß Excel-Makros Programme sind, die, je nach Autor, auch viele Dinge machen können, von denen Sie kaum begeistert sein könnten. Deshalb empfehle ich gerade für den Fall, daß Sie mich nicht persönlich kennen, größte Vorsicht. Je nach den Einstellungen in Ihrem Rechner werden Sie auch beim Download der Dateien schon Warnmeldungen von Download-Manager, von Antivirenprogramm oder später dann von Excel bekommen.

Deshalb biete ich den Quellcode als eine einfache TXT-Datei, die nicht gefährlicher ist als die Internetseite, die Sie gerade lesen. Sie können die TXT-Datei entweder anklicken, um sie mit Ihrem Browser zu öffnen oder direkt herunterladen.

 

Datei

Beschreibung

add_to_contents.txt

Quellcode des Makros zur Ansicht im Browser und zum Download. Die Parameter sind so eingestellt, daß Sie nach der Installation des Makros mit restore_contents_table sofort ein Inhaltsverzeichnis erzeugen können, wenn Ihre Datei Zellen mit Namen enthält. Wenn Sie dieses Makro zum Test starten, geben Sie bei der ersten Abfrage „Ja“ ein und bei der zweiten „Nein“. Probieren Sie das Makro zuerst an einer Kopie Ihrer Datei aus!

contents_sample_without_macro.xls

Excel-Beispieldatei ohne Makros

contents_sample_with_macro.xls

Excel-Beispieldatei mit Makros.

 

Copyright

Diese Makros dürfen kostenlos für private und andere nicht-kommerzielle Zwecke (z.B. in Vereinen) kopiert, verwendet und an Ihre Bedürfnisse angepaßt werden. Die Makros oder Teile davon dürfen nur zusammen mit den Angaben über Autor, Haftungsausschluß und Copyright unentgeltlich (bis auf ein Dankeschön für die gute Empfehlung) an andere weitergegeben werden. Diese Makros oder Teile davon dürfen ohne Zustimmung des Autors nicht verkauft werden. Wenn Sie die Makros oder Teile davon für kommerzielle Zwecke einsetzen möchten, benötigen Sie dafür eine Lizenz des Autors (Kontakt), nachdem sie das Makro maximal 2 Wochen für Ihren Einsatz getestet haben.

Haftungsausschluß

Wer diese Makros benutzt, ist selbst für die Folgen verantwortlich, ich übernehme dafür keinerlei Haftung! Diese Makros können Programmierfehler enthalten. Viele Makros überschreiben den Inhalt bestimmter Zellen, der dann verloren ist, weil die Ausführung von Makros nicht rückgängig gemacht werden kann.
Tip: Vor Anwendung von Makros diese an einer Beispieldatei testen und die Datei abspeichern, damit sie bei unerwünschten Folgen wieder neu geladen werden kann.

 

 

 

 

Verantwortlich: Bernhard Abmayr,  www.edv-abmayr.de, Stand: 26.11.2010