Como insertar un espacio fino de no separación desde macro en LibreOffice Writer

Pues eso, no encuentro la manera de insertar un espacio fino de no separación en un documento de Writer desde una macro

Prueba con este código:

Sub InsertarEspacioFinoNoSeparacion()
Dim oDoc As Object
Dim oText As Object
Dim oTextCursor As Object
Dim oTextRange As Object
Dim oService As Object

' Obtén el documento actual
oDoc = ThisComponent

' Obtén el texto seleccionado o el cursor actual
oText = oDoc.Text

' Obtén el cursor de texto
oTextCursor = oText.createTextCursor()

' Obtén el servicio de formato de caracteres
oService = createUnoService("com.sun.star.text.Text")

' Configura el formato de caracteres para espacio fino de no separación
oService.CharUnderline = com.sun.star.text.TextUnderline::SINGLE
oService.CharUnderlineColor = RGB(0, 0, 0)
oService.CharUnderlineHasColor = True
oService.CharUnderlineText = True

' Inserta el espacio fino de no separación en el cursor actual
oText.insertString(oTextCursor, " ", False)

' Aplica el formato de caracteres al espacio fino de no separación
oTextRange = oTextCursor
oTextRange.CharProperties = oService

End Sub

Gracias por la respuesta,

Esto es de gran ayuda, sin duda. En mi proyecto, tengo una serie de campos en el texto que actualizo desde una macro, y en esos campos debo introducir texto que deben llevar ese carácter de no separación. Lo he conseguido con esto:

espacio_NS = createUnoService(“com.sun.star.sheet.FunctionAccess”).callfunction(“UNIChar”, array(8239))
texto = “AAA BBB CCC”
texto = replace (texto, " ", espacio_NS)

Si lo que quieres es el carácter que se introduce con CTRL+SHIFT+SPACE, entonces…

import uno
from com.sun.star.text.ControlCharacter import HARD_SPACE

def main():
    doc = XSCRIPTCONTEXT.getDocument()
    cursor = doc.CurrentController.ViewCursor
    doc.Text.insertControlCharacter(cursor, HARD_SPACE, False)
    return

Muchas gracias por la respuesta…

Esto también me resulta de gran ayuda.