Ich komme mit einem Makro bis zur Selektion, aber weiß nicht, wie es geht, das nächste Wort zu "überspringen".
im Prinzip mit:
Code: Alles auswählen
.GotoNextWord
*die Markierung umfasst am Anfang und Ende kein Leerzeichen zum 'umgebenden' Text
*die Markierung umfasst rechts ein Leerzeichen zum 'umgebenden' Text
*die Markierung umfasst links ein Leerzeichen zum 'umgebenden' Text
Etwas Probleme bereiten auch mögliche enthaltene Satzzeichen, deshalb schau mal ob das Dir schon reicht:
Code: Alles auswählen
Sub markierten_text_verschieben()
x = ThisComponent.getCurrentSelection
tmp = x(0).String
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
v_cursor=ThisComponent.GetCurrentController.ViewCursor
If LEFT(tmp, 1) <> " " AND RIGHT(tmp, 1) <> " " Then
cursor.goRight(1,true)
v_cursor.gotoRange(cursor,true)
v_cursor.String = ""
x = ThisComponent.getCurrentSelection
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
cursor.GotoEndOfWord(false)
cursor.GoRight(1,false)
v_cursor.gotoRange(cursor,false)
v_cursor.String = tmp & " "
Elseif Right(tmp, 1) = " " Then
v_cursor.gotoRange(cursor,true)
v_cursor.String = ""
x = ThisComponent.getCurrentSelection
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
cursor.GotoEndOfWord(false)
cursor.GoRight(1,false)
v_cursor.gotoRange(cursor,false)
v_cursor.String = tmp
Else
v_cursor.gotoRange(cursor,true)
v_cursor.String = ""
x = ThisComponent.getCurrentSelection
cursor = ThisComponent.Text.CreateTextCursorByRange(x(0))
cursor.GotoNextWord(false)
cursor.GotoEndOfWord(false)
v_cursor.gotoRange(cursor,false)
v_cursor.String = tmp
End If
End Sub
Gruß
Stephan