Seite 1 von 1
Textmarken in Rahmen
Verfasst: Fr, 04.12.2020 20:29
von susapo
Und gleich ein neues Problem.
ich habe textmarken (Lesezeichen) in ein Wtiter-Dok eingefügt und will per makro dort Text ablegen. Funkt soweit auch gut mit
KKDoc = thiscomponent
textcursor= KKDoc.Text.CreateTextCursor
textcursor.gotoRange(KKDoc.getBookmarks().getByName("KKAnsprech").getAnchor, false)
textcursor.gotoEndOfParagraph(True)
textcursor.String = "Hr. Maier"
wenn die Textmarken aber in einem Rahmen stehen (Für's Anschriftenfeld) geht das nicht mehr.
ich kann die zwar auslesen mit
test = KKDoc.getBookmarks()
aber die obere Variante funktioniert nicht.
ich muß wohl einen textcursor für das frame machen, habe im Netz Teile gefunden wie
Code: Alles auswählen
formFrames = ThisComponent.getTextFrames()
for i = 0 to formFrames.Count -1
formFrame = formFrames(i)
if formFrame.Name = "Rahmen1" then
...
"Rahmen1" wird gefunden, und dann weiß ich nicht weiter....
wie kann ich die Textmarken im Rahmen ansprechen?
Re: Textmarken in Rahmen
Verfasst: Sa, 05.12.2020 13:25
von Stephan
WENN bekannt ist das in "Rahmen1" wirklich die Textmarke "KKAnsprech" vorhanden ist, dann z.B.:
Code: Alles auswählen
Sub Main
KKDoc = thiscomponent
formFrames = KKDoc.getTextFrames()
for i = 0 to formFrames.Count -1
formFrame = formFrames(i)
if formFrame.Name = "Rahmen1" then
textcursor = formFrame.Text.CreateTextCursor
textcursor.gotoRange(KKDoc.getBookmarks().getByName("KKAnsprech").getAnchor, false)
textcursor.gotoEndOfParagraph(True)
textcursor.String = "Hr. Maier"
End If
Next i
End Sub
ansonsten z.B.:
Code: Alles auswählen
Sub Main2
KKDoc = thiscomponent
formFrames = KKDoc.getTextFrames()
On Error Resume Next
for i = 0 to formFrames.Count -1
formFrame = formFrames(i)
textcursor = formFrame.Text.CreateTextCursor
textcursor.gotoRange(KKDoc.getBookmarks().getByName("KKAnsprech").getAnchor, false)
textcursor.gotoEndOfParagraph(True)
textcursor.String = "Hr. Maier"
Next i
End Sub
Gruß
Stephan
Re: Textmarken in Rahmen
Verfasst: Sa, 05.12.2020 14:07
von mikeleb
Hallo,
es klappt auch, wenn man untersucht, wo sich das Lesezeichen befindet.
Code: Alles auswählen
Sub Main3
KKDoc = thiscomponent
formFrames = KKDoc.getTextFrames()
lz=KKDoc.getBookmarks().getByName("Lesezeichen 1")
lz_anker=lz.getanchor
'standardmäßig sei das Lesezeichen im eigentlichen Fließtext
oBereich=KKDoc
'alternativ in einem Rahmen oder Tabelle?
lz_frame=lz_anker.textframe
lz_tab=lz_anker.cell
if isobject(lz_frame) then
oBereich=lz_frame
elseif isobject(lz_tab) then
oBereich=lz_tab
end if
textcursor = oBereich.Text.CreateTextCursor
textcursor.gotoRange(lz_anker, false)
textcursor.String = "Hr. Maier"
End Sub
Re: Textmarken in Rahmen
Verfasst: Sa, 05.12.2020 14:28
von susapo
Hallo Stephan,
herzlichen Dank!
Ja es ist bekannt, wo die Textmarke liegt, weil ich sie selber gesetzt habe. Insofern ist die erste Lösung perfekt.
Die zweite Lösung ist ja echt cool!, fahr den Karren solange gegen die Wand, bis vllt die Tür aufgeht.
Auf sowas komm ich immer gar nciht.
Hallo mikeleb,
Dank auch an dich. Deinen Code heb ich mir für später auf, zZ hab ich es nur mit selbst angelegten Textmarkwen zu tun.
mfG Michael
Textmarken sichtbar machen geht offenbar nicht im Writer, hat da jmd schon mal ein Makro geschrieben für?
Re: Textmarken in Rahmen
Verfasst: Sa, 05.12.2020 16:03
von mikeleb
Hallo,
wenn klar ist, dass die Textmarke in einem Rahmen ist, reicht folgendes:
Code: Alles auswählen
Sub Main4
KKDoc = thiscomponent
lz=KKDoc.getBookmarks().getByName("Lesezeichen 1")
lz_anker=lz.getanchor
textcursor = lz_anker.textframe.Text.CreateTextCursor
textcursor.gotoRange(lz_anker, false)
textcursor.String = "Hr. Maier"
End Sub
Re: Textmarken in Rahmen
Verfasst: Sa, 05.12.2020 16:05
von mikeleb
Hallo,
Textmarken sichtbar machen geht offenbar nicht im Writer, hat da jmd schon mal ein Makro geschrieben für?
Was meinst du mit "sichtbar machen"? Zum Finden bietet sich der Navigator an.
Re: Textmarken in Rahmen
Verfasst: Sa, 05.12.2020 16:23
von susapo
mit sichtbar machen meine ich das, was man mit Feldnamen tun kann unter Ansicht-Feldnamen.
Also dass man auf einen Blick sieht, wo überall Textmarken stehen.