Hallo,
ist es wirklich so, daß mit Basic- Makros Textmarken in Writer nur außerhalb von Tabellen funktionieren?
Ich habe eine Textmarke innerhalb einer Tabelle, die ich manuell ganz korrekt anspringen kann. Mit dem Makro funktioniert das nur, wenn die Marke außerhalb einer Tabelle ist. Die Marke wird innerhalb der Tabelle zwar ordentlich gefunden, wenn ich dort aber den sichtbaren Cursor platzieren will, kommt eine Fehlermeldung "Basic- Laufzeitfehler", ... "Message .", also ohne genaue Fehlerangabe.
oSichtbarerCursor = oDoc.getCurrentController().getViewCursor()
Bookmark=oDoc.Bookmarks.getByName("weiter_im_Text") -> bis hierher i.O.
oDocCursor = oDoc.Text.createTextCursorByRange(Bookmark.Anchor) -> Fehlermeldung
oSichtbarerCursor.gotoRange(oDocCursor, FALSE)
Kann man das Problem irgendwie umgehen?
Vielen Dank
Moritz
Textmarke
Moderator: Moderatoren
Re: Textmarke
Hey Moritz,
nein, das geht natürlich auch in allen anderen Bereichen - außerhalb des fliessenden Textes. Nur eben anders....
Der Fehler liegt eben genau auch hier :
im ...Text... - denn die Tabelle ist ja nun kein "Text" mehr, insofern kanst du auf dem Objekt auch keinen Textcursor mit Anker Bookmark erzeugen (der Anker führt zur Fehlermeldung).
Was genau willst du denn erreichen? Den sichtbaren Cursor auf die Bookmark setzen? Text dort einfügen? Meiner Ansicht brauchst du die Zeile mit dem Textcursor doch gar nicht - du kannst doch gleich das Ankerobjekt der Bookmark als Sprungstelle für den Sichtcursor benuzten, oder?
Gruss
Thomas
nein, das geht natürlich auch in allen anderen Bereichen - außerhalb des fliessenden Textes. Nur eben anders....
Der Fehler liegt eben genau auch hier :
Code: Alles auswählen
oDocCursor = oDoc.Text.createTextCursorByRange(Bookmark.Anchor) -> Fehlermeldung
Was genau willst du denn erreichen? Den sichtbaren Cursor auf die Bookmark setzen? Text dort einfügen? Meiner Ansicht brauchst du die Zeile mit dem Textcursor doch gar nicht - du kannst doch gleich das Ankerobjekt der Bookmark als Sprungstelle für den Sichtcursor benuzten, oder?
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Re: Textmarke
Hey Moritz,
noch zur Ergänzung: Falls du wissen willst, wo sich deine Bookmark befindet (denn davon hängt es ab, wie du den Textcursor erzeugst), dann kannst du das folgende Makro benutzen:
Die Reihenfolge der If-Abfragen ist recht wichtig. Ähnliches benutzt di auch, um die Position des View-Cursors rauszufinden 
Gruss
Thomas
noch zur Ergänzung: Falls du wissen willst, wo sich deine Bookmark befindet (denn davon hängt es ab, wie du den Textcursor erzeugst), dann kannst du das folgende Makro benutzen:
Code: Alles auswählen
sub PositionBookmark
oBM = thisComponent.getBookmarks().getByName("NameDerTextmarke").getAnchor()
If Not IsEmpty(oBM.TextTable) then
s = "in einer Text-Tabelle."
ElseIf Not IsEmpty(oBM.TextFrame) then s = "in einem Textrahmen."
ElseIf Not IsEmpty(oBM.TextSection) then s = "in einem Textbereich."
ElseIf Not IsEmpty(oBM.TextField) then s = "am Anfang eines Textfeldes"
ElseIf oBM.getText.ImplementationName = "SwXFootnote" then s = "in einer Fussnote."
ElseIf oBM.getText.ImplementationName = "SwXEndnote" then s = "in einer Endnote."
ElseIf oBM.getText.ImplementationName = "SwXHeadFootText" then s = "in der Kopf- oder Fusszeile."
Else s = "voraussichtlich in normalen Text."
EndIf
MsgBox "Die ""Bookmark"" befindet sich " & s
end sub

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Re: Textmarke
Hallo, Thomas,vielen Dank für Deine umfangreiche Hilfe. Ich möchte den sichtbaren Cursor an die Bookmark setzen um dann ganz normal (ohne Makro) weiter Text zu schreiben (sozusagen am Anfang eines Kurzbriefes nach der Anrede).
Ich denke, daß ich es so hinbekomme. Die Unterschiede zwischen normalem Text und Text in einer Tabelle muß ich mir genauer ansehen.
Moritz
Ich denke, daß ich es so hinbekomme. Die Unterschiede zwischen normalem Text und Text in einer Tabelle muß ich mir genauer ansehen.
Moritz