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
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

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

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

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

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

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 ;)

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