Hyperlink für Stichworte
Moderator: Moderatoren
Re: Hyperlink für Stichworte
Hallo Quosti,
ich lasse mal "die Hosen runter". Ich kann das nicht.
Würdes Du das Makro umbauen. Es kommt doch bestimmt darauf, es an der richtigen Stelle einzubauern.
Albert
ich lasse mal "die Hosen runter". Ich kann das nicht.
Würdes Du das Makro umbauen. Es kommt doch bestimmt darauf, es an der richtigen Stelle einzubauern.
Albert
Re: Hyperlink für Stichworte
Hallo,
dein Stichwortverzeichnis (alphabetisches Rezeptverzeichnis) ist schon eine ganz andere Hausnummer:
mehrere Tabulatoren, zusätzlicher Text unmittelbar nach dem Verzeichniseintrag, zusätzlicher Text unmittelbar vor der Seitennummer
Dieser Situation sind die Makros (weder das ursprüngliche, noch meine Überarbeitung) nicht gemacht. Prinzipiell lässt sich das im Makro umsetzen, indem man z. B. die Strukur ausliest (siehe .Levelformat).
Mal sehen, ob ich das schaffe ... ohne das es zu komplex wird.
dein Stichwortverzeichnis (alphabetisches Rezeptverzeichnis) ist schon eine ganz andere Hausnummer:
mehrere Tabulatoren, zusätzlicher Text unmittelbar nach dem Verzeichniseintrag, zusätzlicher Text unmittelbar vor der Seitennummer
Dieser Situation sind die Makros (weder das ursprüngliche, noch meine Überarbeitung) nicht gemacht. Prinzipiell lässt sich das im Makro umsetzen, indem man z. B. die Strukur ausliest (siehe .Levelformat).
Mal sehen, ob ich das schaffe ... ohne das es zu komplex wird.
Gruß,
mikeleb
mikeleb
Re: Hyperlink für Stichworte
Hallo Albert,
Ich kann für dich leider nicht das Makro einbauen. Ich kann auch nicht deswegen quer durch Deutschland fahren.
Gibt es keinen Jüngeren in deiner Nähe, der auf die von mir beschriebene Weise das Makro einbauen kann?
Es wäre noch die ferne Möglichkeit, das Makro in das Dokument, das als Ziel der Bearbeitung gilt, einzubauen. Aber dann muß es zugänglich sein und das geht nicht über das Forum.
Hinzu kommt, dass die ganze Mühe umsonst sein kann, wenn aus mir jetzt nicht bekannten Gründen das Makro für dein Dokument nicht brauchbar ist.
Leider kann man ein Makro, wenn es im Dokument verankert ist, nicht unmittelbar an einem anderen Dokument arbeiten lassen. Da muss man auch ein wenig fummeln, um es zu den eigenen Makros rüberzuziehen.
Ich arbeite nicht täglich mit neuen Makros, müßte also selber mich erst wieder sachkundig machen. Also alles hippig.
Diese Datei hat das Makro. Man kann es sowohl unter AOO als auch LibreOffice (was ich momentan benutze) auf diese Datei arbeiten lassen. Hierzu geht man nach dem Öffnen der Date mit Bejahung der Frage "Makros aktivieren"
unter Extras -> Makros -> Makros ausführen ->"Der Taucher ..." -> Standard -> das unterste Makro "Stichworte_Hyperlinks" -> "verweise_setzen" und dann Knopf Ausführen.
Danach ist für diese Datei das Stichwortverzeichnis verlinkt, derart, dass ein Klick auf die Seitennummer im Stichwortverzeichnis (ohne strg-Taste Taste wie beim Inhaltsverzeichnis oder eine sonstige) sofort zur betreffenden Seite gsprungen wird.
Ich kann für dich leider nicht das Makro einbauen. Ich kann auch nicht deswegen quer durch Deutschland fahren.
Gibt es keinen Jüngeren in deiner Nähe, der auf die von mir beschriebene Weise das Makro einbauen kann?
Es wäre noch die ferne Möglichkeit, das Makro in das Dokument, das als Ziel der Bearbeitung gilt, einzubauen. Aber dann muß es zugänglich sein und das geht nicht über das Forum.
Hinzu kommt, dass die ganze Mühe umsonst sein kann, wenn aus mir jetzt nicht bekannten Gründen das Makro für dein Dokument nicht brauchbar ist.
Leider kann man ein Makro, wenn es im Dokument verankert ist, nicht unmittelbar an einem anderen Dokument arbeiten lassen. Da muss man auch ein wenig fummeln, um es zu den eigenen Makros rüberzuziehen.
Ich arbeite nicht täglich mit neuen Makros, müßte also selber mich erst wieder sachkundig machen. Also alles hippig.
Diese Datei hat das Makro. Man kann es sowohl unter AOO als auch LibreOffice (was ich momentan benutze) auf diese Datei arbeiten lassen. Hierzu geht man nach dem Öffnen der Date mit Bejahung der Frage "Makros aktivieren"
unter Extras -> Makros -> Makros ausführen ->"Der Taucher ..." -> Standard -> das unterste Makro "Stichworte_Hyperlinks" -> "verweise_setzen" und dann Knopf Ausführen.
Danach ist für diese Datei das Stichwortverzeichnis verlinkt, derart, dass ein Klick auf die Seitennummer im Stichwortverzeichnis (ohne strg-Taste Taste wie beim Inhaltsverzeichnis oder eine sonstige) sofort zur betreffenden Seite gsprungen wird.
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Re: Hyperlink für Stichworte
Hallo Quosti,
Frage wozu gibt es TeamViewer?
Ich denke mir, dass es in Geifswald inzwischwen ein ordenliches Internet gibt.
Immerhin habt ihr ja eine Uni.
Albert
Frage wozu gibt es TeamViewer?
Ich denke mir, dass es in Geifswald inzwischwen ein ordenliches Internet gibt.
Immerhin habt ihr ja eine Uni.
Albert
Re: Hyperlink für Stichworte
Bist ja besser informiert als man glauben kann.
Wieso kannst du dann nicht selber weiter machen? Liegt doch alles offen.
Wieso kannst du dann nicht selber weiter machen? Liegt doch alles offen.
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Re: Hyperlink für Stichworte
Hallo,
ich habe mal ein bisschen weiter gebastelt.
Die verschiedenen Meldungen sind nun in einem Dialog zusammengefasst.
Verschiedenen Verzeichnisstrukturen werden akzeptiert (Texte unmittelbar hinter den Einträgen, mehrere Tabulatoren, Texte unmittelbar vor den Seitenzahlen). Ein Verzeichnisabsatz muss allerdings stets mit dem Eintrag beginnen und mit Seitenzahl(en) enden. Sollte die Struktur nicht passen, wird die Arbeit beendet.
Das Verzeichnis wird innerhalb des Makros automatisch aktualisiert. Soweit ich es begriffen habe, wird dabei aber eine Konkordanzdatei nicht erneut ausgewertet! Dass müsste manuell vorher geschehen (Verzeichnis->Bearbeiten)
Um damit effektiv zu arbeiten und es für mehrere Dateien zu nutzen würde ich es in ein neues Modul in "Meine Makros" speichern.
Also:
->Extras->Makros->Makros verwalten->Basic
In dem Dialog, im Bereich "Makro aus" auf "Meine Makros" klicken, dann auf die Schaltfläche "Verwalten".
In dem Dialog nun auf die Bibliothek "Standard" klicken und dann auf die Schaltfläche "Neu". Dem Modul nun einen zweckmäßigen Namen geben, z. B. "verzeichnis_verlinken" und OK.
Nun auf Bearbeiten klicken und das Makro hineinkopieren oder aus der Datei importieren.
ich habe mal ein bisschen weiter gebastelt.
Die verschiedenen Meldungen sind nun in einem Dialog zusammengefasst.
Verschiedenen Verzeichnisstrukturen werden akzeptiert (Texte unmittelbar hinter den Einträgen, mehrere Tabulatoren, Texte unmittelbar vor den Seitenzahlen). Ein Verzeichnisabsatz muss allerdings stets mit dem Eintrag beginnen und mit Seitenzahl(en) enden. Sollte die Struktur nicht passen, wird die Arbeit beendet.
Das Verzeichnis wird innerhalb des Makros automatisch aktualisiert. Soweit ich es begriffen habe, wird dabei aber eine Konkordanzdatei nicht erneut ausgewertet! Dass müsste manuell vorher geschehen (Verzeichnis->Bearbeiten)
Code: Alles auswählen
REM ***** BASIC *****
'Das Modul enthält 9 Subs:
'haupt_stichworte_verlinken -> das zu startende Makro
'erstelle_dialog -> ein Untermakro, um den Dialog zur Laufzeit zu erstellen aus dem heraus die anderen Makros gestartet werden:
' verweise_setzen -> das eigentliche Programm, um Seitenzahlen im Stichwortverzeichnis mit Querverweisen zu versehen
' butlist1_ActionPerformed, butlist2_ActionPerformed -> Makros für den ActionListener für die Button im Dialog
' win_windowClosing, win_windowClosed, win_windowActivated, win_windowDeactivated -> Makros für den Fensterlistener, um auf das Schließen des Dialogs reagieren zu können
public warten_dialog as object
public abbruch as boolean 'beendet Hauptschleife wenn der Benutzer den Dialog vorfristig schließt
Const praefix="x_" 'Präfix für die Stichwortlesezeichen, zur Unterscheidung ggf. anderer Lesezeichen
Sub haupt_stichworte_verlinken
erstelle_dialog
End Sub
Sub verweise_setzen()
'Originalautor: www.jm-schmidt.de
'be- und umgearbeitet im April 2023: de.openoffice.info, mikeleb
startzeit = time()
warten_dialog.getcontrol("but2").visible=false
warten_dialog.getcontrol("but1").model.label="Stop"
warten_dialog.getcontrol("but1").model.enabled=false
oDoc=ThisComponent
cur = oDoc.Text.createTextCursor
oViewCursor = oDoc.CurrentController.getViewCursor
indexes = ThisComponent.getDocumentIndexes()
For i = 0 To Indexes.getCount() - 1
oIndex = Indexes.getByIndex(i)
If oIndex.supportsService("com.sun.star.text.DocumentIndex") Then
warten_dialog.getcontrol("warten1").text="gefundenes Stichwortverzeichnis: " & oIndex.Name
warten_dialog.getcontrol("warten3").text="Das Stichwortverzeichnis wird aktualisiert ..."
oindex.update
wait 1000
warten_dialog.getcontrol("warten3").text="Die Verzeichnisstruktur wird geprüft ..."
'Prüfen der Verzeichnisstruktur und Auslesen von zusätzlichem Text hinter Eintrag bzw. vor Seitennummer
fehler=0
ReDim level(2)
for lv=0 to 2
level1=oindex.levelformat.getbyindex(2+lv)
suffix_lv=""
praefix_lv=""
for token=0 to ubound(level1)
if level1(token)(0).value="TokenEntryText" then
if token>0 then
fehler=1 'das 1. Token muss der Verzeichniseintrag sein
end if
if level1(token+1)(0).value="TokenText" then
suffix_lv=level1(token+1)(2).value
end if
end if
if level1(token)(0).value="TokenPageNumber" then
if token<ubound(level1) then
fehler=2 'das letzte Token muss die Seitennummer sein
end if
if level1(token-1)(0).value="TokenText" then
praefix_lv=level1(token-1)(2).value
if level1(token-2)(0).value<>"TokenTabStop" then
fehler=3 'vor dem Text vor der Seitennummer muss ein TabStop sein
end if
elseif level1(token-1)(0).value<>"TokenTabStop" then
fehler=3 'wenn kein text vor der Seitennummer dann muss da ein TabStop sein
end if
end if
next
level(lv)=array(suffix_lv, praefix_lv)
next
if not(oIndex.UseCombinedEntries) then
fehler=4
end if
if fehler>0 then
warten_dialog.getcontrol("warten3").text="Diese Strukur des Stichwortverzeichnisses kann nicht verarbeitet werden!"
end if
wait 1000
If fehler=0 then
warten_dialog.getcontrol("but1").model.enabled=true
warten_dialog.getControl("warten3").Text = "alte Lesezeichen werden gelöscht ..."
'Alle ursprünglichen Lesezeichen entfernen
oMarks=ThisComponent.Bookmarks
for k=oMarks.count-1 to 0 step -1
oMark=oMarks.getbyindex(k)
if left(oMark.Name,len(praefix))=praefix then
oMark.anchor.getText().removeTextContent(oMark)
end if
next
'Alle Stichwortvorkommen im Dokument einlesen und Lesezeichen setzen
oindex=odoc.documentindexes(i)
Dim aStichworte(ubound(oindex.documentindexmarks))
n_sw=-1
Do while not(abbruch) and n_sw < ubound(aStichworte)
n_sw=n_sw+1
warten_dialog.getControl("warten3").Text = "Stichwörter werden eingelesen, Lesezeichen gesetzt ... " & n_sw+1 & " von " & ubound(aStichworte)+1
oMark=oindex.DocumentIndexMarks(n_sw)
'zur Textstelle gehen
oViewCursor.gotoRange(oMark.anchor, false)
aStichworte(n_sw)=DimArray(4)
aStichworte(n_sw)(0)=rtrim(oMark.markEntry & oMark.anchor.string) 'Text des Eintrages, ggf. Leerzeichen am Ende werden entfernt, da sie im Verzeichnis ebenfalls automatisch entfernt werden
aStichworte(n_sw)(1)=oViewCursor.getpage 'Seite des Vorkommens
aStichworte(n_sw)(2)=oviewcursor.position.x 'Position des Vorkommens
aStichworte(n_sw)(3)=oviewcursor.position.y
aStichworte(n_sw)(4)=praefix & aStichworte(n_sw)(0) & "-" & n_sw 'Name des Lesezeichens
'Lesezeichen erstellen
oBookmark = ThisComponent.createInstance("com.sun.star.text.Bookmark")
oBookmark.setName(aStichworte(n_sw)(4))
ocurtmp=oViewcursor.Text.createTextCursor
ocurtmp.gotoRange(oMark.anchor, false)
oViewCursor.Text.insertTextContent(ocurtmp, oBookmark, False)
Loop
warten_dialog.getControl("warten3").Text ="Querverweise werden erstellt ..."
cur.gotoRange(oIndex.getAnchor, false)
cur.CollapseToStart 'vorderste Position im Verzeichnis
'Anzahl Einträge ermitteln
anzahl_eintraege = 0
Do
IF cur.ParaStyleName = oIndex.ParaStyleLevel1 OR cur.ParaStyleName = oIndex.ParaStyleLevel2 OR cur.ParaStyleName = oIndex.ParaStyleLevel3 Then
anzahl_eintraege = anzahl_eintraege + 1
Elseif cur.ParaStyleName <> oIndex.ParaStyleHeading AND cur.ParaStyleName <> oIndex.ParaStyleSeparator Then
Exit Do
End If
cur.GotoNextParagraph(False)
Loop
cur.gotoRange(oIndex.getAnchor, false)
cur.CollapseToStart
dd = 0
Do While not(abbruch) and dd<anzahl_eintraege
cur.GotoEndOfParagraph(False)
select case cur.ParaStyleName
case oIndex.ParaStyleLevel1
lv=0
case oIndex.ParaStyleLevel2
lv=1
case oIndex.ParaStyleLevel3
lv=2
case else
lv=-1
end select
'Verzeichniseintrag?
IF lv>-1 Then
dd = dd + 1
cur.GotoStartOfParagraph(False)
cur.GotoEndOfParagraph(True)
'Auslesen des gesamten Eintrags in Array tmp()
tmp = Split(cur.String, CHR(9))
'Finden aller Lesezeichen zu diesem Eintrag, sortiert
sEintrag=left(tmp(0),len(tmp(0))-len(level(lv)(0)))
warten_dialog.getControl("warten3").Text ="Querverweise werden erstellt ... " & dd & " von " & anzahl_eintraege &_
chr(10) & chr(10) & "aktueller Eintrag: " & sEintrag
n=-1
for z=0 to ubound(aStichworte)
if aStichworte(z)(0)=sEintrag then
n=n+1
ReDim preserve aEintrag(n)
aEintrag(n)=aStichworte(z)
tausch=1
k=n-1
do while tausch=1 and k>-1
if (aEintrag(k+1)(3)>aEintrag(k)(3)) or (aEintrag(k+1)(3)=aEintrag(k)(3) and aEintrag(k+1)(2)>aEintrag(k)(2)) then
tausch=0
else
swp=aEintrag(k)
aEintrag(k)=aEintrag(k+1)
aEintrag(k+1)=swp
end if
k=k-1
loop
end if
next
'Auslesen der ggf. mehreren Seitenzahlen
tmp2 = Split(join(split(tmp(ubound(tmp)),level(lv)(1)),""), ", ")
tmp(ubound(tmp))=level(lv)(1)
'.UseCombinedEntries ?
'.UsesDash ? .UsePP ?
'es können drei Fälle auftreten (.UsesCombinedEntries=True und .UsesDash=False und .UsePP=True):
' 45 Stichwort nur auf der Seite
' 45f. Stichwort auf der Seite und der folgenden
' 45ff. Stichwort auf der Seite und den folgenden
'der Link wird, in diesem Beispiel, immer nur zum Stichwort auf Seite 45 führen - ein Link zu mehreren Zielen ist nicht möglich
'es können zwei Fälle auftreten (.UsesCombinedEntries=True und .UsesDash=True und .UsePP=False):
' 45 Stichwort nur auf der Seite 45
' 45-47 Stichwort auf der Seite 45 bis einschließlich Seite 46
'
'wenn .UsesCombinedEntries=False oder .UsesDash=False und .UsePP=False, dann gibt es zu jedem Eintrag eine Liste nur einzelner Seiten
'der Fall muss nicht extra betrachtet werden
if ubound(tmp2)>-1 then 'mindestens eine Seitennummer vorhanden?
if oIndex.UsePP then
sTrenner="f"
else
sTrenner="-"
end if
'aktuelle Zeile im Verzeichnis
cur.GotoStartOfParagraph(False)
'lösche alles hinter dem Tabulator
cur.goRight(LEN(join(tmp,chr(9))), False)
cur.GotoEndOfParagraph(True)
cur.String = ""
'Aufspalten einer Seitennumer mit ggf. f. oder ff.
tmp3=split(tmp2(0),sTrenner)
'die Seitenzahl weg
nseite=val(tmp3(0))
tmp3(0)=""
'neuer Text ohne Seitenzahl
neu=join(tmp3,sTrenner)
'Suche das Lesezeichen auf der richtigen Seite
nr=0
do until aEintrag(nr)(1)=nseite or nr=ubound(aEintrag)
nr=nr+1
loop
'msgbox nr
if aEintrag(nr)(1)=nseite then 'Lesezeichen auf der Seite existiert
oReference = ThisComponent.createInstance("com.sun.star.text.textfield.GetReference")
oReference.SourceName = aEintrag(nr)(4)
oReference.SequenceNumber = 0
oReference.ReferenceFieldPart = com.sun.star.text.ReferenceFieldPart.PAGE
oReference.ReferenceFieldSource = com.sun.star.text.ReferenceFieldSource.BOOKMARK
oDoc.getText.insertTextContent(cur, oReference, False)
cur.GotoEndOfParagraph(False)
else 'Lesezeichen nicht vorhanden
cur.String = nSeite
cur.collapsetoend
end if
cur.String = neu
cur.collapsetoend
'falls noch mehr Seiten zu dem Eintrag
for j=1 to ubound(tmp2)
cur.String = ", "
cur.collapsetoend
tmp3=split(tmp2(j),sTrenner)
nseite=val(tmp3(0))
tmp3(0)=""
neu=join(tmp3,sTrenner)
do until aEintrag(nr)(1)=nseite or nr=ubound(aEintrag)
nr=nr+1
loop
'msgbox nr
if aEintrag(nr)(1)=nseite then 'Lesezeichen auf der Seite existiert, Querverweis setzen
oReference = ThisComponent.createInstance("com.sun.star.text.textfield.GetReference")
oReference.SourceName = aEintrag(nr)(4)
oReference.SequenceNumber = 0
oReference.ReferenceFieldPart = com.sun.star.text.ReferenceFieldPart.PAGE
oReference.ReferenceFieldSource = com.sun.star.text.ReferenceFieldSource.BOOKMARK
oDoc.getText.insertTextContent(cur, oReference, False)
cur.GotoEndOfParagraph(False)
else 'Lesezeichen nicht vorhanden, es wird der ursprüngliche Text gesetzt
cur.String =nSeite
cur.collapsetoend
end if
cur.String = neu
cur.collapsetoend
next
end if
end if
cur.GotoNextParagraph(False)
loop
oviewcursor.gotoRange(oIndex.getAnchor, false)
oviewcursor.collapsetostart
end if
end if
next
ThisComponent.getTextfields.refresh()
warten_dialog.getControl("warten4").Text ="Start: " & startzeit & " " & "Ende: " & time()
warten_dialog.getControl("but1").Label="Ende"
End Sub
Sub erstelle_dialog
'warten-Dialog--------------------------
warten_model = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
warten_model.setPropertyValue("Width", 300) '343
warten_model.setPropertyValue("Height", 120) '65
warten_model.setPropertyValue("PositionX", 100)
warten_model.setPropertyValue("PositionY", 100)
warten_model.SetPropertyValue("Title","Stichwortverzeichnisse verlinken")
oMod_warten = warten_model.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
With oMod_warten
.setPropertyValue("Name","warten1")
.setPropertyValue("PositionX",5) '192
.setPropertyValue("PositionY",5)
.setPropertyValue("Width",180)
.setPropertyValue("Height",15)
.setPropertyValue("MultiLine", True)
.setPropertyValue("Label",ThisComponent.Title)
End With
warten_model.insertByName("warten1", oMod_warten)
oMod_warten2 = warten_model.createInstance("com.sun.star.awt.UnoControlButtonModel")
With oMod_warten2
.setPropertyValue("Name","but1")
.setPropertyValue("PositionX",10)
.setPropertyValue("PositionY",95) '45
.setPropertyValue("Width",60)
.setPropertyValue("Height",16)
.setPropertyValue("Label", "Abbruch")
.setPropertyValue("DefaultButton", True)
'.setPropertyValue("Enabled", False)
End With
warten_model.insertByName("but1", oMod_warten2)
oMod_warten5 = warten_model.createInstance("com.sun.star.awt.UnoControlButtonModel")
With oMod_warten5
.setPropertyValue("Name","but2")
.setPropertyValue("PositionX",100)
.setPropertyValue("PositionY",95) '45
.setPropertyValue("Width",60)
.setPropertyValue("Height",16)
.setPropertyValue("Label", "OK")
' .setPropertyValue("DefaultButton", True)
' .setPropertyValue("Enabled", False)
End With
warten_model.insertByName("but2", oMod_warten5)
oListbut1 = createUnoListener("butlist1_","com.sun.star.awt.XActionListener")
oListbut2 = createUnoListener("butlist2_","com.sun.star.awt.XActionListener")
oMod_warten3 = warten_model.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
With oMod_warten3
.setPropertyValue("Name","warten3")
.setPropertyValue("PositionX",5) '192
.setPropertyValue("PositionY",25)
.setPropertyValue("Width",180)
.setPropertyValue("Height",45)
.setPropertyValue("MultiLine", True)
.setPropertyValue("Label","Wollen Sie die Einträge im Stichwortverzeichnis verlinken? " &_
CHR(13) & CHR(13) & "Das Stichwortverzeichnis wird zunächst automatisch aktualisiert.")
End With
warten_model.insertByName("warten3", oMod_warten3)
oMod_warten4 = warten_model.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
With oMod_warten4
.setPropertyValue("Name","warten4")
.setPropertyValue("PositionX",5) '192
.setPropertyValue("PositionY",75)
.setPropertyValue("Width",180)
.setPropertyValue("Height",15)
.setPropertyValue("MultiLine", True)
.setPropertyValue("Label","")
End With
warten_model.insertByName("warten4", oMod_warten4)
oWinLis = createUnoListener("win_","com.sun.star.awt.XTopWindowListener")
warten_dialog = CreateUnoService("com.sun.star.awt.UnoControlDialog")
warten_dialog.addTopWindowListener(oWinLis)
warten_dialog.setModel(warten_model)
warten_dialog.getControl("but1").addActionListener(oListbut1)
warten_dialog.getControl("but2").addActionListener(oListbut2)
oWin2 = CreateUnoService("com.sun.star.awt.Toolkit")
warten_dialog.createPeer(oWin2, null)
warten_dialog.execute
End Sub
Sub butlist1_ActionPerformed(oevent)
warten_dialog.endexecute
end sub
Sub butlist2_ActionPerformed(oevent)
verweise_setzen
end sub
sub win_windowClosing()
abbruch=true
end sub
sub win_windowActivated
'
end sub
sub win_windowDeactivated
'
end sub
sub win_windowClosed()
abbruch=true
end sub
Also:
->Extras->Makros->Makros verwalten->Basic
In dem Dialog, im Bereich "Makro aus" auf "Meine Makros" klicken, dann auf die Schaltfläche "Verwalten".
In dem Dialog nun auf die Bibliothek "Standard" klicken und dann auf die Schaltfläche "Neu". Dem Modul nun einen zweckmäßigen Namen geben, z. B. "verzeichnis_verlinken" und OK.
Nun auf Bearbeiten klicken und das Makro hineinkopieren oder aus der Datei importieren.
- Dateianhänge
-
- stichworte_verlinken_2.bas.odt
- die Endung .odt nach dem Download entfernen
- (14.88 KiB) 100-mal heruntergeladen
Gruß,
mikeleb
mikeleb
Re: Hyperlink für Stichworte
Hallo,
Das ist alles vielversprechend.
Ich habe ja insgesamt drei Prüfobjekte:
1. Der Taucher - mit konventionellen Stichworteinträgen und Inhaltsverzeichnis.odt
Hier klappt das neue Makro gut !
2. Der Taucher - neu mit Konkordanz-Stichworteinträgen und Inhaltsverzeichnis.odt mit der Konkordanzdatei-1.sdi
Dann habe ich mit meinem Makro alle Stichworte gelöscht und das Verzeichnis mit der Konkordanzdatei wieder aufgebaut und nochmals aktualisiert.
Es klappt !
3.1. Koch- und Backrezepte - mit alphabetischem Stichwortverzeihnis - für LO.odt
gut gelaufen !
3.2. Koch- und Backrezepte - mit kapitelweisem Stichwortverzeichnis - für LO.odt
klappt ebenfalls prächtig !
3.3. Koch- und Backrezepte - komplett mit 2 Stichwortverzeichnissen - für LO.odt
führt naturgemäß ins Nirwana. Aber "alles aktualisieren" stellt den Ursprung wieder her. Man darf ja nicht das Unmögliche fordern.
Bitte umbenennen in Konkordanzdatei-1.sdi und mit dem Stichwortverzeichnis verlinken und aktualisieren.
Ein Schönheitsfehler bleibt: Man hat in dem zutreffenden Modul zu viele Makros, aber nur eines soll man aufrufen. Kann man denn die anderen nicht irgendwie als Unterroutine verstecken?
Dennoch: Es bleibt bei einem GROSSEN LOB für mikeleb, der eine Lösung für die fehlenden Hyperlinks im Stichwortverzeichnis gefunden hat.
Das ist alles vielversprechend.
Ich habe ja insgesamt drei Prüfobjekte:
1. Der Taucher - mit konventionellen Stichworteinträgen und Inhaltsverzeichnis.odt
Hier klappt das neue Makro gut !
2. Der Taucher - neu mit Konkordanz-Stichworteinträgen und Inhaltsverzeichnis.odt mit der Konkordanzdatei-1.sdi
Dann habe ich mit meinem Makro alle Stichworte gelöscht und das Verzeichnis mit der Konkordanzdatei wieder aufgebaut und nochmals aktualisiert.
Es klappt !
3.1. Koch- und Backrezepte - mit alphabetischem Stichwortverzeihnis - für LO.odt
gut gelaufen !
3.2. Koch- und Backrezepte - mit kapitelweisem Stichwortverzeichnis - für LO.odt
klappt ebenfalls prächtig !
3.3. Koch- und Backrezepte - komplett mit 2 Stichwortverzeichnissen - für LO.odt
führt naturgemäß ins Nirwana. Aber "alles aktualisieren" stellt den Ursprung wieder her. Man darf ja nicht das Unmögliche fordern.
Bitte umbenennen in Konkordanzdatei-1.sdi und mit dem Stichwortverzeichnis verlinken und aktualisieren.
Ein Schönheitsfehler bleibt: Man hat in dem zutreffenden Modul zu viele Makros, aber nur eines soll man aufrufen. Kann man denn die anderen nicht irgendwie als Unterroutine verstecken?
Dennoch: Es bleibt bei einem GROSSEN LOB für mikeleb, der eine Lösung für die fehlenden Hyperlinks im Stichwortverzeichnis gefunden hat.
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Re: Hyperlink für Stichworte
Hallo mikeleb,
Ich weiß nicht wie lange OpenOffice.info-Forum noch lebt. Vor kurzem war noch eine Ankündigung zum "Sterben" zu lesen. Aber ich bin nicht eingeweit.
Deshalb kommt mir die Idee, dass man für das Unterforum "Wissensarchiv" einen Artikel schreiben müßte, der den Nutzen und die Anwendung deines jetzigen Makros beschreibt. Wenn Du das aus Zeitdruck nicht kannst, würde ich damit anfengen, natürlich nur mit deiner Einwilligung, denn ich will mich nicht mit fremden Federn schmücken.
Ich weiß nicht wie lange OpenOffice.info-Forum noch lebt. Vor kurzem war noch eine Ankündigung zum "Sterben" zu lesen. Aber ich bin nicht eingeweit.
Deshalb kommt mir die Idee, dass man für das Unterforum "Wissensarchiv" einen Artikel schreiben müßte, der den Nutzen und die Anwendung deines jetzigen Makros beschreibt. Wenn Du das aus Zeitdruck nicht kannst, würde ich damit anfengen, natürlich nur mit deiner Einwilligung, denn ich will mich nicht mit fremden Federn schmücken.
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Re: Hyperlink für Stichworte
Hallo quotsi,
vielen Dank für die umfangreichen Tests (und die Blumen )!!!
Die Erstellung eines Stichwortverzeichnisses per Konkordanzdatei scheint wirklich etwas fehlerhaft zu sein (manchmal liefert dann .DocumentIndexMarks mehr Einträge als wirklich da sind, was dann zu der Fehlermeldung führt - warum habe ich noch nicht herausgefunden und auch nicht, wie man es abfangen könnte). Sauber funktioniert es, wenn zunächst alle Stichworteinträge gelöscht werden. Hier wird dein Makro wichtig!
Der nichtfunktionierende Fall mit zwei Stichwortverzeichnissen ist noch ärgerlich (theoretisch sollte es funktionieren, aber ...)
Der Vorschlag mit dem "Wissensarchiv" ist super. Wenn du damit starten möchtest - gern, Teamwork ist alles
vielen Dank für die umfangreichen Tests (und die Blumen )!!!
Die Erstellung eines Stichwortverzeichnisses per Konkordanzdatei scheint wirklich etwas fehlerhaft zu sein (manchmal liefert dann .DocumentIndexMarks mehr Einträge als wirklich da sind, was dann zu der Fehlermeldung führt - warum habe ich noch nicht herausgefunden und auch nicht, wie man es abfangen könnte). Sauber funktioniert es, wenn zunächst alle Stichworteinträge gelöscht werden. Hier wird dein Makro wichtig!
Der nichtfunktionierende Fall mit zwei Stichwortverzeichnissen ist noch ärgerlich (theoretisch sollte es funktionieren, aber ...)
Der Vorschlag mit dem "Wissensarchiv" ist super. Wenn du damit starten möchtest - gern, Teamwork ist alles
Gruß,
mikeleb
mikeleb
- miesepeter
- ********
- Beiträge: 2159
- Registriert: Sa, 10.05.2008 15:05
- Wohnort: Bayern
Re: Hyperlink für Stichworte
Du meinst wahrscheinlich:
http://www.ooowiki.de/
Auf der Startseite wird als Termin der 29.04.2023 genannt, an dem das Wiki vom Netz genommen wird.
Du kannst bis dahin noch das ooowiki.de komplett downloaden (unter Linux mit wget); es wurde auch noch als kompakte PDF-Datei (jedoch ohne Beispieldateien, logischerweise) hier angeboten:
viewtopic.php?t=76483 (Thread durchlesen); https://www.libreoffice-forum.de/viewto ... 53#p100842
Bei diesem Forum hier ist wohl mittelfristig nicht zu erwarten, dass es stirbt, da es sich mittlerweile auch um ein LibreOffice-Forum handelt. Den Rückgang der Fragen kann man gut feststellen beim openoffice-forum.de, das kaum noch angefragt wird - im Gegensatz zum libreoffice-forum.de.
Ciao
Re: Hyperlink für Stichworte
Hallo quotsi,
das Problem mit der Konkordanzdatei lässt mich nicht wirklich los. Es existiert seit langem ein Bugreport https://bugs.documentfoundation.org/sho ... i?id=44152
dazu, der aber auch (noch) keine Lösung bietet ...
Bleibt also die manuelle Variante:
1. Alle Verzeichniseinträge löschen
2. Stichwortverzeichnis per Bearbeiten erneuern.
das Problem mit der Konkordanzdatei lässt mich nicht wirklich los. Es existiert seit langem ein Bugreport https://bugs.documentfoundation.org/sho ... i?id=44152
dazu, der aber auch (noch) keine Lösung bietet ...
Bleibt also die manuelle Variante:
1. Alle Verzeichniseinträge löschen
2. Stichwortverzeichnis per Bearbeiten erneuern.
Gruß,
mikeleb
mikeleb
Re: Hyperlink für Stichworte
Nach meiner Meinung entsteht das Problem immer dann, wenn eine inhomogene Beziehung zwischen der Konkordanzdatei und den Stichworten im Text vorliegt. Das kommt bereits vor, wenn jemand weitere Stichworte im Fließtext einfügt anstelle in der Konkordanzdatei. Auch dann kommt es vor, wenn in der Konkordanzdatei etwas gelöscht wird. Denn offenbar werden im Normalfall zwar zusätzliche Daten aus der Konkordanzdatei in den Text als Stichwort übernommen, aber es werden keine Einträge im Fließtext gelöscht. Deshalb ist das Makro "AlleStichworteTilgen" aus meinem alten Wissensarchiv-Beitrag "Überführung von Stichworten ... in eine Konkordanzdatei" so wichtig geblieben, bevor man das Verzeichnis nach Änderungen aktualisiert.
Gruß
Gruß
win11 - Avira - LO 7.6.6.3 (X86_64) - AOO 4.1.15
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.