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

Basic findet keine Lesezeichen

Alles zur Programmierung im LibreOffice.
Antworten
UliK
Beiträge: 10
Registriert: Sa 10. Dez 2011, 15:07

Basic findet keine Lesezeichen

Beitrag von UliK » So 11. Dez 2011, 19:57

Hallo Forum,
ich möchte über ein kleines Lo-Basic-Programm Lesezeichen in einem Dokument anspringen und dort Text einfügen der über einen Dialog eingegeben wurde.
Aus dem Basic Programmierhandbuch von Sun habe ich folgende Sequenz übernommen:
Sub GotoTextMarke(Textmarke as String,Text as String)
dim oDoc as Object
dim oBookmark as Object
dim oCursor as Object

oDoc = StarDesktop.CurrentComponent

oBookmark = oDoc.Bookmarks.getByName(Textmarke)

oCursor = oDoc.Text.createTextCursorByRange(oBookmark.Anchor)
oCursor.String = Text
End Sub

Bei meinen Testläufen bekomme ich aber immer die im Anhang dargestellte Fehlermeldung, mit der ich sehr wenig anfangen kann.
Fehlermeldung Bookmark
Fehlermeldung Bookmark
Libre-Office-Makro-Bookmark.png (31.92 KiB) 6188 mal betrachtet
Über Hilfe bin ich sehr dankbar.
UliK

Freelancer
Beiträge: 35
Registriert: Sa 28. Mai 2011, 15:30

Re: Basic findet keine Lesezeichen

Beitrag von Freelancer » So 11. Dez 2011, 21:47

Hallo,

Du musst dem Makro in der Zeile

Code: Alles auswählen

oBookmark = oDoc.Bookmarks.getByName(Textmarke)
den Namen der Textmarke mitgeben die Du ansprechen willst.

Zum Beispiel so:

Code: Alles auswählen

oBookmark = oDoc.Bookmarks.getByName("DeineTextmarke")
oder so:

Code: Alles auswählen

....
Textmarke = "DeineTextmarke"
oBookmark = oDoc.Bookmarks.getByName(Textmarke)
....
Freelancer

UliK
Beiträge: 10
Registriert: Sa 10. Dez 2011, 15:07

Re: Basic findet keine Lesezeichen

Beitrag von UliK » Mo 12. Dez 2011, 07:33

Lieber Freelancer,
vielen Dank für Deine Antwort. Leider funktioniert auch dies nicht, es erscheint die gleiche Fehlermeldung. Das Programm ist so gestaltet, dass der Procedur GotoBookmark der Name des Lesezeichens und der einzufügende Text als Parameter übergeben werden.
Wird hingegen das Lesezeichen mit einer kleinen Programmsequenz angelegt, so kommt keine Fehlermeldung, der Text wird aber nicht an der Textmarke eingefügt.
Grüße
UliK

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Basic findet keine Lesezeichen

Beitrag von gogo » Mo 12. Dez 2011, 10:05

hab' nicht viel Erfahrung mit Bookmarks, aber so? :

Code: Alles auswählen

oCursor = oBookmark.Anchor.Text.createTextCursorByRange(oBookmark.Anchor)
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Freelancer
Beiträge: 35
Registriert: Sa 28. Mai 2011, 15:30

Re: Basic findet keine Lesezeichen

Beitrag von Freelancer » Mo 12. Dez 2011, 10:26

Hallo UliK,
UliK hat geschrieben:Wird hingegen das Lesezeichen mit einer kleinen Programmsequenz angelegt, so kommt keine Fehlermeldung, der Text wird aber nicht an der Textmarke eingefügt.
Hmm, mir ist da noch etwas aufgefallen:

Du übergibst hier

Code: Alles auswählen

Sub GotoTextMarke(Textmarke as String,Text as String)
Text as String
Text ist aber ein fester Begriff in Starbasic, dass siehst Du an der blauen Darstellung des Begriffs in der IDE, únd ist somit als Variable nicht verwendbar.

Hier mal ein lauffähiger Code mit Parameterübergabe:

Code: Alles auswählen

Sub Eintrag_TM
GotoTextMarke("TM1","Mein Text")
End Sub


Function GotoTextMarke(Textmarke as String,oText as String)
dim oDoc as Object
dim oBookmark as Object
dim oCursor as Object
oDoc = thisComponent
oBookmark = oDoc.Bookmarks.getByName(Textmarke)
oCursor = oDoc.Text.createTextCursorByRange(oBookmark.Anchor)
oCursor.String = oText
End Function
Freelancer

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Basic findet keine Lesezeichen

Beitrag von gogo » Mo 12. Dez 2011, 11:44

Bei mir funktionieren beide Codes:

Code: Alles auswählen

oCursor = oDoc.Text.createTextCursorByRange(oBookmark.Anchor)
und
oCursor = oBookmark.Anchor.Text.createTextCursorByRange(oBookmark.Anchor)
Die falsche Verwendung von Schlüsselwörtern müsste schon beim Kompilieren, spätenstens aber beim Aufruf

Code: Alles auswählen

Sub GotoTextMarke(Textmarke as String,Text as String)
einen Fehler erzeugen, schließlich sind die Argumente ja nicht optional.

Hast Du den Code schon mal nach einem kompletten Neustart versucht - vllt. hast Du ja nur ein temporäres Runtime-Problem - viel mehr steht in der Fehlermeldung nämlich auch nicht drin ;)
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

UliK
Beiträge: 10
Registriert: Sa 10. Dez 2011, 15:07

Re: Basic findet keine Lesezeichen

Beitrag von UliK » Mo 12. Dez 2011, 19:54

Hallo
vielen Dank für eure Hilfe, es funktioniert mit sText und dem anderen Aufruf

oCursor = oBookmark.Anchor.Text.createTextCursorByRange(oBookmark.Anchor)

Danke
UliK


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