![¿Cómo escribir una macro para que las palabras seleccionadas tengan una marca de énfasis?](https://rvso.com/image/1304108/%C2%BFC%C3%B3mo%20escribir%20una%20macro%20para%20que%20las%20palabras%20seleccionadas%20tengan%20una%20marca%20de%20%C3%A9nfasis%3F.png)
¿Cómo puedo escribir una macro para OpenOffice Writer, que obtiene las palabras/caracteres que seleccioné con el mouse y una marca de énfasis como un punto sobre las palabras/caracteres?
Intenté grabar macro, pero fallé.
Espero que alguien aquí pueda ayudarme.
Estoy intentando escribir una macro para OpenOffice Writer y LibreOffice Writer. Esta macro agregará una barra de herramientas en Writer, similar a la barra de herramientas de puntuación china en la versión china de MS Word. Los botones de la barra de herramientas son signos de puntuación chinos. Uno de los botones será la marca de énfasis utilizada en chino simplificado en China. La marca de énfasis es un punto debajo del carácter chino que se enfatiza cuando la dirección del texto es horizontal, un punto a la derecha del carácter resaltado cuando la dirección del texto es vertical.
No conozco OpenOffice Basic ni otros lenguajes utilizados para escribir programas de computadora, pero sé que la grabadora de macros del Writer puede grabar algunos códigos que pueden usarse para escribir la macro que necesito. Y sigo buscando en Google para encontrar más información y aprender a escribir la macro. Para la mayoría de los signos de puntuación, los códigos son simples.
Por ejemplo, para insertar una marca de parada, los códigos son:
rem U+3002
sub cp01
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Text"
args1(0).Value = "。"
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
end sub
Pero la grabadora de macros de LibreOffice 3.4 no pudo grabar una macro viable para la marca de énfasis. En realidad, Writer se cerró inesperadamente tan pronto como cambié la marca de énfasis de "(Sin)" a "Punto" en los efectos de fuente del cuadro de diálogo de caracteres de Writer. Me vi obligado a descargar e instalar OpenOffice.org 3.3 y 3.4.
El grabador de macros del OpenOffice.org 3.3 tampoco puede grabar, pero el del 3.4 sí. La macro es:
sub Test20120206_1
rem --------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem -------------------------------
dispatcher.executeDispatch(document, ".uno:EmphasisMark", "", 0, Array())
end sub
Esta macro no funciona.
Respuesta1
Encontré la página web: http://user.services.openoffice.org/en/forum/viewtopic.php?f=45&t=21813
Una macro de FJCC me hizo muy feliz porque es corta y sobre cómo aplicar un efecto a personajes seleccionados, esto podría ser lo que necesito.
Doc = ThisComponent
Selections = Doc.CurrentSelection
FirstSelection = Selections.getByIndex(0)
TextString = FirstSelection.String
UCaseStr = UCase(TextString)
FirstSelection.String = UCaseStr
Luego volví a combinar este código con las macros de MS Word, el japonés y Pitonyak A. y encontré uno viable:
sub EmphasisMark
Doc = ThisComponent
Selections = Doc.CurrentSelection
FirstSelection = Selections.getByIndex(0)
If FirstSelection.CharEmphasis = com.sun.star.text.FontEmphasis.NONE Then
FirstSelection.CharEmphasis = com.sun.star.text.FontEmphasis.DOT_BELOW
Else
FirstSelection.CharEmphasis = com.sun.star.text.FontEmphasis.NONE
End If
end sub
Esto es lo que necesito. Finalmente...