BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 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
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 nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten