🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Liste der Textmarken erzeugen [Gelöst]

Alles zur Programmierung im LibreOffice.
Antworten
Alton
Beiträge: 8
Registriert: Do 4. Jul 2013, 14:21

Liste der Textmarken erzeugen [Gelöst]

Beitrag von Alton » Mi 16. Okt 2013, 12:37

Hallo!

Ich bastel gerade an einem Makro, das mir alle im Writer-Dokument vorhandenen Textmarken auflisten soll.

Für Word/Visual Basic hab ich entsprechenden Code gefunden, aber für LibreOffice nicht.

Nun wollte ich das Word-Makro einfach umbauen, damit es in LO läuft, aber ich stecke fest.

Der Original-Code lautet:

Code: Alles auswählen

Sub BookmarksAuflisten()

Dim aDoc As Document
 Dim bDoc As Document
 Set aDoc = ActiveDocument
 Set bDoc = Documents.Add
 For i = 1 To aDoc.Bookmarks.Count
 sBn = aDoc.Bookmarks(i).Name
 bDoc.Range.InsertAfter sBn & vbCr
 Next i
 bDoc.Activate
 
End Sub
Ich hab daraus bisher das gemacht:

Code: Alles auswählen

Sub BookmarksAuflisten

Dim aDoc As Object
Dim Dummy() 
Dim Url As String
Dim bDoc As Object
 
Url = "private:factory/swriter"

 Set aDoc = ThisComponent
bDoc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy())

 For i = 1 To aDoc.Bookmarks.Count
 sBn = aDoc.Bookmarks(i).Name
 bDoc.Range.InsertAfter sBn & vbCr
 Next i

End Sub
In dem Inhalt der For-Schleife gibt es nun natürlich Probleme. Mit sowas hab ich gerechnet. Allerdings weiß ich nicht, was das StarBasic-Pendant dazu aussehen müsste oder wie der Code sonst umzuschreiben wäre, damit die Namen der Textmarken im neu erzeugten Dokument untereinander aufgelistet werden.

Ich kenne mich weder mit Visual Basic noch mit StarBasic gut aus. Kann jemand helfen? :)
Zuletzt geändert von Alton am Do 24. Okt 2013, 13:52, insgesamt 1-mal geändert.

pmoegenb

Re: Liste der Textmarken erzeugen

Beitrag von pmoegenb » Mi 16. Okt 2013, 12:55

Informationen zu StarBasic findest Du hier.

Weshalb möchtest Du etwas codieren was im Navigator eingebaut ist ? Du kannst damit sogar zu den Textmarken springen.

Alton
Beiträge: 8
Registriert: Do 4. Jul 2013, 14:21

Re: Liste der Textmarken erzeugen

Beitrag von Alton » Mi 16. Okt 2013, 13:30

Danke erstmal für den Link.

Die Funktionalität des Navigators (Springen zur Textmarke) ist mir bekannt. :)

Hast du dir angesehen, was der Visual Basic-Code macht?

Wenn du mir sagen kannst, wie ich das mit dem Navigator hinbekomme, würde mich das sehr freuen. Also so, dass ein neues Dokument oder eine Liste erzeugt wird, in dem/der die Textmarken untereinander aufgeführt sind, und zwar nicht nur zum einzeln Anklicken, sondern ich brauche tatsächlich die Namen der Textmarken als editierbaren oder zumindest kopierbaren Text.

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Liste der Textmarken erzeugen

Beitrag von F3K Total » Fr 18. Okt 2013, 23:24

Hi,
habe hier eine Lösung für Dich gebaut:
Am Ende des Dokumentes wir ein Seitenumbruch eingefügt und dann alle vorhandenen Textmarken untereinander aufgelistet.

Code: Alles auswählen

Sub BookmarksAuflisten
    oBookmarks = thiscomponent.bookmarks
    oText = Thiscomponent.Text
    oTextcursor = oText.createTextcursor
    oTextCursor.gotoend(false)
    oTextCursor.breaktype = 5
    oText.insertControlCharacter(oTextCursor,0 , False)'neue Seite
    oTextCursor.gotoend(false)
    oTextcursor.String = "Textmarken in diesen Dokument:" + chr(13)+chr(13)
    oTextCursor.gotoend(false)
    for i = 0 to oBookmarks.count - 1
        obookmark = oBookmarks(i)
        sName = obookmark.Name
        sText = obookmark.Anchor.String
        oTextcursor.String = sName
        oTextcursor.HyperLinkURL = "#"+sName
        oTextCursor.gotoend(false)
        oTextcursor.String = ": "+sText
        oTextCursor.gotoend(false)
        if i < oBookmarks.count - 1 then
            oText.insertControlCharacter(oTextCursor,0 , False)
        endif
    next i
End Sub
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

Alton
Beiträge: 8
Registriert: Do 4. Jul 2013, 14:21

Re: Liste der Textmarken erzeugen

Beitrag von Alton » Do 24. Okt 2013, 13:50

Oh, hey klasse! Vielen Dank! :)

Funktioniert super. Die Verlinkungen und die Zielausgabe hab ich wieder rausgenommen, da nicht benötigt.
Nochmal vielen Dank für deine Hilfe. :D

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Liste der Textmarken erzeugen [Gelöst]

Beitrag von F3K Total » Do 24. Okt 2013, 19:55

Hi,
nach toll, erst willst du
Alton hat geschrieben:nicht nur zum einzeln Anklicken
und dann wieder
Alton hat geschrieben:Die Verlinkungen und die Zielausgabe hab ich wieder rausgenommen, da nicht benötigt.
Dafür habe ich mir dann Zeit genommen, echt super:evil:
R
Windows 11: AOO, LO Linux Mint: AOO, LO

Alton
Beiträge: 8
Registriert: Do 4. Jul 2013, 14:21

Re: Liste der Textmarken erzeugen [Gelöst]

Beitrag von Alton » Fr 25. Okt 2013, 11:04

Zugegeben, im Nachhinein ist das Wörtchen "nur" da oben fehl am Platze. Tut mir leid, das hatte ich auf die Funktionalität des Navigators bezogen.
Ich hoffe, der Zeitaufwand für den Teil des Codes hielt sich in Grenzen.


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten