🙏 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. 🤗

Writer: Hyperlink einfügen

Alles zur Programmierung im LibreOffice.
Antworten
Fred_J
Beiträge: 8
Registriert: Mo 1. Okt 2018, 08:39

Writer: Hyperlink einfügen

Beitrag von Fred_J » Mi 26. Feb 2020, 08:10

Hallo,
ich versuche, einen Hyperlink auf eine andere odt-Datei in ein Writer-Dokument einzufügen:

Code: Alles auswählen

Sub InsertHyperlink(filePath As String)
 Dim url As String
 Dim oDoc As Object, oText As Object, oLink As Object
 
 oDoc = ThisComponent
 oText = oDoc.Text
 url = ConvertToUrl(filePath)
 oLink = oDoc.createInstance( "com.sun.star.text.TextField.URL" )
 oLink.URL = url
 oLink.Representation = filePath
 'XRay oLink ' -> Format = 2

 oText.insertTextContent(oText.getEnd(), oLink, false) ' Illegal argument
End Sub
XRay zeigt, daß das Link-Objekt erzeugt wird und die Property Format auf 2 gesetzt wird.
insertTextContent löst Exception IllegalArgument aus.
Wie mache ich das richtig?

Vielen Dank,
Fred

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Writer: Hyperlink einfügen

Beitrag von craig » Mi 26. Feb 2020, 20:44

Hallo Fred,

ich bin mir nicht sicher, aber man kann Text nur an einen der Cursor übergeben.

Es gibt nur einen ViewCursor, dieser entspricht dem blinkendem Cursor im Dokument.
Ausserdem gibt es die Möglichkeite einen oder mehrere TextCursor zu definieren.
Der/ die TextCursor ist/sind nicht sichtbar, aber man kann sich wie mit dem ViewCursor durch das Dokument bewegen.

Es gibt aber Unterschiede: Siehe hier...

8.1.4 Wie kann man einen Hyperlink einfügen?
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

Fred_J
Beiträge: 8
Registriert: Mo 1. Okt 2018, 08:39

Re: Writer: Hyperlink einfügen

Beitrag von Fred_J » Mi 26. Feb 2020, 21:27

Danke Craig
für Deine schnelle Antwort!
Inzwischen habe ich noch einiges probiert und herausgefunden:
Ein Hyperlink in einem odt ist kein TextField, sondern eine TextPortion eines Paragraph.
Von einer TextPortion kann ich keine Instanz erstellen, Fehler: Service not registered.
Dein Link ist da gut:
http://www.dannenhoefer.de/faqstarbasic ... l#Zweig247
Danke dafür!
Ich versuche mal, morgen damit weiterzukommen.

Einen schönen Abend wünscht
Fred

Fred_J
Beiträge: 8
Registriert: Mo 1. Okt 2018, 08:39

[GELÖST]: Writer: Hyperlink einfügen

Beitrag von Fred_J » Do 27. Feb 2020, 10:13

Hallo,
der Code funktioniert jetzt:

Code: Alles auswählen

Sub InsertHyperlink(filePath As String, aText As String)
 Dim url As String
 Dim oDoc As Object, oText As Object, oCursor As Object
 
 url = ConvertToUrl(filePath)
 oDoc = ThisComponent
 oText = oDoc.Text
 oText.insertControlCharacter(oText.getEnd(), _
  com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)
 oText.insertString(oText.getEnd(), filePath, false)
  
 oCursor = oText.CreateTextCursor()
 oCursor.gotoEnd(false)
 oCursor.gotoStartOfParagraph(false)

 oCursor.goRight(Len(filePath), true)
 With oCursor
  .HyperLinkName = "DocLink" 'optional
  .HyperLinkURL = url
 End With
 
 oText.insertString(oText.getEnd(), aText, false)
End Sub

Viele Grüße,
Fred


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