Crear un tabulador tachado hasta el final de linea

Pues eso, no si se puede hacer en Writer, quiero crear una macro que me permita matar líneas desde que se acaba el texto escrito hasta el final de línea, es algo que usamos mucho en mi trabajo, con el grabador de macros casi lo tengo, pero tropiezo en como decirle a la macro donde termina el último caracter, o donde está el cursor, me he dado cuenta que el final del tabulador lo define aquí:

args2(0).Value = Array(17000,com.sun.star.style.TabAlign.LEFT,","," ")

pero ¿cómo le digo donde está el cursor o el último caracter a partir de donde empieza la tabulación y tiene que hacer el matado de la línea?

Gracias

Supongo que con “matar líneas” te refieres a “completar” la línea con algún carácter… ¿verdad?

Eso es lo que quiero, que haya una raya desde el último carácter que haya, o desde la posición del cursor hasta el final de la línea.

Gracias por responder

CUIDADO, es muy dependiente de donde esta el cursor, debe estar al final de la línea que quiere completar…

Sub main()
	
	doc = ThisComponent
	seleccion = doc.CurrentSelection(0)
	cursor = doc.Text.createTextCursorByRange(seleccion.Text)
	cursor.ParaTabStops = Array(CrearTabStop(2540 * 6.5))
	cursor.gotoEndOfParagraph(False)
	seleccion.End.Text.insertString(cursor, CHR(9), False)
	
End Sub

Private Function CrearTabStop(posicion As Long, _
		Optional alineacion, Optional relleno _
        ) As com.sun.star.style.TabStop
        
    If IsMissing(alineacion) Then
        alineacion = com.sun.star.style.TabAlign.RIGHT
    EndIf
    If IsMissing(relleno) Then
        relleno = Asc(".")
    EndIf

    tab_stop = createUnoStruct("com.sun.star.style.TabStop")

    tab_stop.Position = posicion
    tab_stop.Alignment = alineacion
    tab_stop.FillChar = relleno

    CrearTabStop() = tab_stop
    
End Function

Mil gracias, voy a probar

Sería perfecto si nunca mas utilizas otros tabuladores en el formato de un texto, pero tiene un problemón, lo aplica sobre todo el texto, no sobre la línea donde está situado, de esta manera cada vez que ejecutas la macro modifica todas las tabulaciones anteriores, rellenandolas y cambiando su tamaño. ¿Cómo se puede hacer para que solo funcione sobre la tabulación en cuestión y no sobre el resto?

no entendí… que es lo que sucede… de hecho, con hacerlo en el primero si sigues escribiendo lo respeta, como puedes ver en la imagen… pero… también se puede editar el estilo del párrafo, con esto, no necesitas macros, salvo que el texto ya este y quieras completar líneas, pero… no me gusta adivinar… si detallas el escenario con detalle y precisión, se puede mejorar…

Siento no haber podido hacerme entender bien, con esta captura de pantalla a lo mejor me expreso mejor:

eso hace… como dije, solo depende de que pongas el cursor al final de la línea…

Creo que puedes conseguirlo sin macro.
Menú/Formato/Párrafo/Tabuladores
Creas uno en la posición del fin de línea por ejemplo 17 cm. y seleccionas el carácter de relleno.
Al escribir terminas pulsando el tabular y te rellena con el carácter seleccionado hasta la posición indicada del tabulador.

https://help.libreoffice.org/latest/es/text/shared/01/05030300.html?DbPAR=SHARED#bm_id3156027

si, se lo menciono en mi comentario anterior… con macros es útil para cuando ya tienes un montón de texto que hay que completar…

Disculpa a veces uno va demasiado rápido. :slight_smile:

al contrario, en mi comentario esta apenas mencionado, tu lo complementas perfectamente… :grinning:

Lo he resuelto utilizando:

oTCurs.CharStrikeOut = com.sun.star.awt.FontStrikeout.SINGLE
oText.End.Text.insertString(oTCurs, Chr(9) , FALSE)
oTCurs.CharStrikeOut = com.sun.star.awt.FontStrikeout.NONE

Gracias a todos por vuestra ayuda

Solo para quien tenga una necesidades similar, si bien, aparentemente tienen el mismo efecto, cambiar el estilo te puede llevar a esto… reitero, solo para tenerlo presente.

¿Cómo hacer que esta macro funcione en un cuadro de texto?
Cuando la ejecuto recibo el siguiente error en la línea:

cursor = doc.Text.createTextCursorByRange(seleccion.Text)

Error de ejecución de BASIC.
Se ha producido una excepción
Tipo: com.sun.star.uno.RuntimeException
Mensaje: El nodo de fin de contenido no tiene el nodo de inicio adecuado.