Seite 1 von 2
Stichwortverzeichnis / Register über eine vorhandene Tabelle
Verfasst: Mo 23. Dez 2024, 17:31
von anton
Hallo,
diese Frage habe ich schon im Bereich "Writer" gestellt - aber das, was ich will, muss man wohl programmieren?
Es existiert eine Tabelle im writer mit mehreren Spalten und vielen Zeilen.
Über den Inhalt dieser Tabelle, eine Liste über vorhandene Filme, möchte ich ein Stichwortverzeichnis / ein Register erstellen.
Kurze Beschreibung der Tabelle:
Spalte 1: Filmnummer; die Nummer beginnt nach einem Themenwechsel neu.
Spalte 2: Darsteller, Beteiligte - in mehreren Zeilen. Nach diesen soll im Stichwortverzeichnis gesucht werden.
Spalte 3: Filmtitel in der ersten Zeile, Beschreibungen folgen in den nächsten Zeilen;
nur die erste Zeile soll für das Verzeichnis verwendet werden.
Aufbau des Stichwortverzeichnisses:
Spalte 1: Name Beteiligte, jeweils nur ein Name.
Spalte 2: Filmtitel
Spalte 3: Filmnummer
Sortierung des Stichwortverzeichnisses:
Nach Spalte 1 und dann nach Spalte 2
Wie das zu machen ist?
Ich habe keinen blassen Schimmer.
Vielen Dank für Hinweise.
anton
Re: Stichwortverzeichnis / Register über eine vorhandene Tabelle
Verfasst: Di 24. Dez 2024, 11:50
von F3K Total
Moin,
anton hat geschrieben: ↑Mo 23. Dez 2024, 17:31
Spalte 1: Filmnummer; die Nummer
beginnt nach einem Themenwechsel
neu.
Spalte 2: Darsteller, Beteiligte -
in mehreren Zeilen. Nach diesen soll im Stichwortverzeichnis gesucht werden.
Spalte 3: Filmtitel in der
ersten Zeile, Beschreibungen folgen in
den nächsten Zeilen;
nur die erste Zeile soll für das Verzeichnis verwendet werden.
Da hast du für eine anständige Analyse den falschen Aufbau der Tabelle gewählt.
Grundsätzlich:
- Wenn die Filmnummer mehfach vorkommt kann sie nicht eindeutig zugeordnet werden, eine fortlaufende Nummerierung ist sinnvoll.
- Wenn du Darsteller und Beteiligte in mehrere Zeilen einer Zelle schreibst erkennt das Programm nur einen einzigen Text, da etwas herauszufischen ist sehr schwierig.
- Das gleiche gilt für Filmtitel/Beschreibung, auch in einer Zelle, nur sehr schwer auseinanderzuhalten.
Was willst du denn mit deinem Verzeichnis eigentlich erreichen?
Etwas finden, oder etwas sortieren, oder, oder?
Gruß R
Re: Stichwortverzeichnis / Register über eine vorhandene Tabelle
Verfasst: Fr 27. Dez 2024, 14:36
von anton
Anmerkung:
Die vorhandene Tabelle ist nun schon sehr groß geraten, sonst käme ich nicht auf die Idee, sie mit einem Stichwortverzeichnis / einem Register zusätzlich zu erschließen.
Die Tabelle umzuarbeiten, damit ich sie besser per Programm erschließen kann, da lerne ich lieber etwas über die Möglichkeiten von Makros in Writer-Tabellen.
Um mir einen Eindruck zu verschaffen:
- Wie spreche ich eine Writer-Tabelle mit einem Makro an?
- Wie sind die Spalten anzusprechen und auszulesen?
- Kann ich einzelne Zeilen in einem Tabellenfeld auslesen?
(Wie schon anfangs bemerkt, ich bin Anfänger)
Re: Stichwortverzeichnis / Register über eine vorhandene Tabelle
Verfasst: Fr 27. Dez 2024, 15:18
von Pit Zyclade
Fällt dir gar nicht auf, dass ich dir gar nicht mehr geschrieben habe?
Warum ignorierst du die Antwort von F3K Total , der uns beiden haushoch überlegen ist, völlig??
Ändere den ersten Beitrag von dir noch einmal (!) und nimm endlich "Stichwortverzeichnis" raus!!! Denn das kann ohne deine Vorarbeit auch nichts lösen.
Wenn du meinst, dass deine Writer-Tabelle zu groß sei, um sie zu erweitern oder umzuarbeiten, dann überführe sie nach calc!
Da kannst du dann Spalten beliebig einfügen, so z.B vor die erste Spalte eine mit der fortlaufenden Nummerierung.
Also erst einmal die einfachen Sachen lernen, bevor man anfängt Tabellen im writer mittels Makro zu bearbeiten. Denn dass wird garantiert nicht einfacher.
Re: Stichwortverzeichnis / Register über eine vorhandene Tabelle
Verfasst: Fr 27. Dez 2024, 15:50
von anton
Ich will mich nicht über Begriffe streiten, trotzdem
https://de.wikipedia.org/wiki/Stichwort ... erzeichnis
Bei einem Themenwechsel kann ich die Tabelle teilen, das ist kein Problem -> die Nummern sind dann eindeutig.
Dann erstelle ich mehrere ...verzeichnisse ...register.
Schön wären Hinweise auf meine Fragen.
Re: Stichwortverzeichnis / Register über eine vorhandene Tabelle
Verfasst: Fr 27. Dez 2024, 16:52
von Pit Zyclade
Ein Stichwortverzeichnis in
LibreOffice oder ähnlichen wird entweder durch Markierung jedes Begriffs und Aufnahme in das Stichwortregister
oder durch Schreibung in eine Konkordanzdatei, die dann mit dem Register verlinkt wird erzeugt.
Wenn man bereits vorhandene Listen nicht neu schreiben will, sollte man sein Produkt (vielleicht) einfach in die Form einer Konkordanzdatei überführen und die dann verlinken. Dann wäre dein Wunsch erfüllt.
Aber man kann vielleicht was anderes machen. Weihnachten ist ja vorbei.
Re: Stichwortverzeichnis / Register über eine vorhandene Tabelle
Verfasst: So 29. Dez 2024, 16:52
von anton
Pit Zyclade hat geschrieben: ↑Fr 27. Dez 2024, 16:52
Wenn man bereits vorhandene Listen nicht neu schreiben will, sollte man sein Produkt (vielleicht) einfach in die Form einer Konkordanzdatei überführen und die dann verlinken. Dann wäre dein Wunsch erfüllt.
Ich habe mir deine Beispieldatei "Konkordanzdatei-2.sdi" aus meinem Writer-Post angesehen:
#Suchbegriff;Registereintrag;1. Schl�ssel;2. Schl�ssel;Gro�/Klein;ganzes Wort
Knapp;Knapp Knappe;Person;;1;1
knecht;Knecht;Person;Hauptperson;0;0
Becher;;Gegenstand;;1;0
J�ngling;;Person;Hauptperson;1;0
K�nig;;Person;Hauptperson;1;1
Ring;;Gegenstand;;1;1
Ritter;;Person;;1;1
Wer wagt es;;Frage;;1;0
Knappen;Knapp Knappe;Person;;0;1
Was du sahst auf des Meeres tiefunterstem Grunde;;Frage;;1;0
Wie ist diese Datei entstanden? Durch händische Einträge - Klicken, Kopieren, Löschen usw. - oder wie?
Kannst du mir ein Beispiel mit einer kleinen writer Tabelle mit drei Spalten (Nr; Name; Bezeichnung) und fünf Tabellenzeilen mit beliebigen Einträgen zeigen, wie ich daraus eine Konkordanzdatei erzeuge ?
Re: Stichwortverzeichnis / Register über eine vorhandene Tabelle
Verfasst: So 29. Dez 2024, 19:23
von Pit Zyclade
anton hat geschrieben: ↑So 29. Dez 2024, 16:52
Konkordanzdatei.sdi:
#Suchbegriff;Registereintrag;1. Schl�ssel;2. Schl�ssel;Gro�/Klein;ganzes Wort
Wie ist diese Datei entstanden? Durch händische Einträge - Klicken, Kopieren, Löschen usw. - oder wie?
Kannst du mir ein Beispiel mit einer kleinen writer Tabelle mit drei Spalten (Nr; Name; Bezeichnung) und fünf Tabellenzeilen mit beliebigen Einträgen zeigen, wie ich daraus eine Konkordanzdatei erzeuge ?
Du hast meine wiederholte Frage nicht beantwortet: Wie stellst du dir den Suchbegriff, der dann automatisch bei jedem Vorkommen im Text im "Stichwortregister" aufgeführt werden soll, vor?
Soll das eine Verbindung aus dem Inhalt der drei Spalten (je Zeile) deiner Tabelle sein?
ODER
Sollen das Einzeldaten aus jeder Spalte sein?
ODER
Sollen das nur Daten aus einer Spalte (z.B. der ersten) sein und die Daten der nächsten Spalte sollen dann Unterbegriffe sein?
Wenn darüber Klarheit besteht, dann geht es weiter.
Was die Konkordanzdatei machen kann, ist dass sie eine Sammlung von einzelnen Suchbegriffen darstellt, Zeile für Zeile ein Suchbegriff. Die Zeilen müssen gar nicht sortiert sein. Was die weiteren "Zutaten" jeder Zeile bewirken, wurde an meinem Gedichtbeispiel offensichtlich.
Re: Stichwortverzeichnis / Register über eine vorhandene Tabelle
Verfasst: Mo 30. Dez 2024, 13:31
von F3K Total
Moin,
da du ja nun unbedingt die folgenden Fragen beantwortet haben möchtest, habe ich dir eine Beispieldatei mit drei dreispaltigen Tabellen gebastelt, deren einzelne Zellen per Schleifen durchlaufen werden.
anton hat geschrieben: ↑Fr 27. Dez 2024, 14:36
... damit ich sie besser per Programm erschließen kann, da lerne ich lieber etwas über die Möglichkeiten von Makros in Writer-Tabellen.
Um mir einen Eindruck zu verschaffen:
- Wie spreche ich eine Writer-Tabelle mit einem Makro an?
- Wie sind die Spalten anzusprechen und auszulesen?
- Kann ich einzelne Zeilen in einem Tabellenfeld auslesen?...
Das Makro habe ich entsprechend kommentiert, so dass du dir damit alle deine o.a. Fragen selbst beantworten kannst.
Der Code sieht so aus:
Code: Alles auswählen
REM ***** BASIC *****
Sub Analyse_Table
oTables = ThisComponent.TextTables ' alle Tabellen der Writer Datei ansprechen
nTablesCount = oTables.Count ' Anzahl der Tabellen auslesen
nCounter = 0 'Laufenden Zellzähler auf Null setzen
for i = 0 to nTablesCount - 1 'Schleife über alle Tabellen der Writer Datei
oTable = oTables (i)'Aktuelle Tabelle wählen
sTableName = oTable.Name 'Namen der aktuellen Tabelle auslesen
msgbox ("Jetzt durchlaufen wir die Zellen der " & sTableName,64,"Analyse der " & sTableName)
nColumns = oTable.Columns.Count ' Anzahl der Spalten der aktuellen Tabelle ermitteln
nRows = oTable.Rows.Count ' Anzahl der Zeilen der aktuellen Tabelle ermitteln
for j = 0 to nColumns - 1 'Schleife über alle Spalten der aktuellen Tabelle
for k = 0 to nRows - 1 'Schleife über alle Zeilen der aktuellen Tabelle
oCell = oTable.getCellbyposition(j,k) 'hier wir die Zelle über ihre Koordinaten (x,y) in der Tabelle angesprochen -> A1 = 0,0 | A2 = 0,1 | B2 = 1,1
nCounter = nCounter + 1 'Zellzähler um 1 erhöhen
sCellname = oCell.CellName 'Namen der Zelle auslesen
sCellString = oCell.String ' Text in der Zelle auslesen
if sCellString = "" then 'feststellen ob der Text leer ist
sMsgboxText = "Die Zelle " & sCellname & " enthält keinen Text"
else
sMsgboxText = "In der Zelle steht der Text:" & chr(13) & chr(13) & sCellString
endif
msgbox ("Die Zelle " & sCellname & " hat die Koordinaten x = " & j & " | y = " & k & chr(13) & sMsgboxText,64,"Analyse der Zelle " & sCellname & " auf Tabelle " & sTableName )
if instr(sCellString,chr(13)) > 0 then 'Feststellen ob der Text Zeilenumbrüche enthält, wenn ja Analyse der Zeilen abfragen
if msgbox ("Sollen die einzelnen Zeilen analysiert werden?",36,"Der Text in der Zelle enthält mehr als eine Zeile") = 6 then
aCellString = split(sCellString,chr(13) & chr(10)) 'Hier wird der mehrzeilige Text in einzelne Elemente aufgebrochen und in ein Array geschrieben
for l = 0 to ubound (aCellString)
msgbox ("Zeile " & (l+1) & ": " & aCellString (l),64,"Analyse der Zeilen in der Zelle")' einzelne Zeilen ausgeben
next l
endif
endif
next k
next j
next i
msgbox ("Alle " & nCounter & " Zellen der " & nTablesCount & " Tabellen wurden durchlaufen.",64,"Fertig!")
End Sub
Viel Erfolg, auch wenn ich nicht glaube, dass du damit weiter kommst.
Die Datei, mit laufendem Makro findest du angehängt.
Nützliche Tipps zum Zugriff auf Text Tabellen im Writer findest du auch bei
Dannenhöfer
Gruß R
Re: Stichwortverzeichnis / Register über eine vorhandene Tabelle
Verfasst: Di 31. Dez 2024, 09:54
von Pit Zyclade
anton hat geschrieben: ↑So 29. Dez 2024, 16:52
Kannst du mir ein Beispiel mit einer kleinen writer Tabelle mit drei Spalten (Nr; Name; Bezeichnung) und fünf Tabellenzeilen mit beliebigen Einträgen zeigen, wie ich daraus eine Konkordanzdatei erzeuge ?
Umgekehrt wird ein Schuh daraus! Kopiere mal 5 deiner Tabellenzeilen und markiere mal fett, welcher Teil einen Eintrag im "Stichwortverzeichnis" werden soll. Und dann versuche mal zu beschreiben, welche hierarchische Ordnung deine Einträge haben sollen.
Vielleicht können wir dann helfen, wie man da vorgehen könnte.