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.