Writer - Querverweis auf Überschriften

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Opa Eckhard
Beiträge: 6
Registriert: Fr, 22.11.2019 12:36

Writer - Querverweis auf Überschriften

Beitrag von Opa Eckhard » Sa, 23.11.2019 10:00

Hallo Freunde/Freundinnen,

Arbeite mit LibreOffice Version: 6.0.7.3 unter macOS Catalina Version 10.15.1 im Writer-Modul und Base-Modul. Mittels Makro gelingt es mir aus den Daten einer Datenbank den Text eines umfangreicheren Writer-Dokumentes zu generieren. Der Text wird mit benutzerdefinierten Formatvorlagen formatiert (Überschriften in zwei Ebenen, Textkörper und Textkörper mit Einzug). Der Textkörper enthält Worte die als als Querverweis auf eine Überschrift stehen. Ein Inhaltsverzeichnis ist nicht Bestandteil des Dokumentes.

Manuell gelingt das Einfügen des Querverweises auf eine Überschrift ohne Probleme. Der Viewcursor führt beim Anklicken des Verweistextes den erwarteten Sprung zur ausgewählten Überschrift sichtbar aus.

Da im Dokument aber mehr Querverweise der beschriebenen Art anzubringen sind, als manuell in vertretbarer Zeit zu bewältigen ist, will ich auch diesen Teil meiner Arbeit ein Makro erledigen lassen.

Andrew Pitonyak beschreibt in "BASIC-Makros für OpenOffice und LibreOffice" mit Listing 405. wie ein GetReference-Feld einzufügen ist. Mir gelingt dies in der Form

oField = oDoc.createInstance("com.sun.star.text.textfield.GetReference")
oField.ReferenceFieldPart = com.sun.star.text.ReferenceFieldPart.TEXT
oField.ReferenceFieldSource = com.sun.star.text.ReferenceFieldSource.BOOKMARK
oField.SequenceNumber = oReferencedField.SequenceValue
oField.SourceName = sSeqName
oText.insertTextContent(oCurs, oField, True)

wenn ich für SequenceNumber und SourceName auslesbare Werte manuell eingefügter Querverweise benutze, um mein Makro zu testen. Woher nehme ich aber für alle anderen Querverweise die entsprechenden Werte?

Die als Sprungziel vorhandenen Überschriften erreiche ich zwar über oDoc.getLinks() kann aber die dort vermuteten Werte nicht finden.

Wer kann mir helfen? Danke.