Seite 1 von 1
Basic findet keine Lesezeichen
Verfasst: So 11. Dez 2011, 19:57
von UliK
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
- Libre-Office-Makro-Bookmark.png (31.92 KiB) 6192 mal betrachtet
Über Hilfe bin ich sehr dankbar.
UliK
Re: Basic findet keine Lesezeichen
Verfasst: So 11. Dez 2011, 21:47
von Freelancer
Hallo,
Du musst dem Makro in der Zeile
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
Re: Basic findet keine Lesezeichen
Verfasst: Mo 12. Dez 2011, 07:33
von UliK
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
Re: Basic findet keine Lesezeichen
Verfasst: Mo 12. Dez 2011, 10:05
von gogo
hab' nicht viel Erfahrung mit Bookmarks, aber so? :
Code: Alles auswählen
oCursor = oBookmark.Anchor.Text.createTextCursorByRange(oBookmark.Anchor)
Re: Basic findet keine Lesezeichen
Verfasst: Mo 12. Dez 2011, 10:26
von Freelancer
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
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
Re: Basic findet keine Lesezeichen
Verfasst: Mo 12. Dez 2011, 11:44
von gogo
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
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

Re: Basic findet keine Lesezeichen
Verfasst: Mo 12. Dez 2011, 19:54
von UliK
Hallo
vielen Dank für eure Hilfe, es funktioniert mit sText und dem anderen Aufruf
oCursor = oBookmark.Anchor.Text.createTextCursorByRange(oBookmark.Anchor)
Danke
UliK