![Como escrever uma macro para obter uma marca de ênfase nas palavras selecionadas?](https://rvso.com/image/1304108/Como%20escrever%20uma%20macro%20para%20obter%20uma%20marca%20de%20%C3%AAnfase%20nas%20palavras%20selecionadas%3F.png)
Como posso escrever uma macro para o OpenOffice Writer, que obtenha as palavras/caracteres que selecionei com o mouse e uma marca de ênfase como um ponto sobre as palavras/caracteres?
Tentei gravar macro, mas não consegui.
Espero que alguém aqui possa me ajudar
Estou tentando escrever uma macro para o OpenOffice Writer e o LibreOffice Writer. Esta macro adicionará uma barra de ferramentas no Writer, semelhante à barra de ferramentas de pontuação chinesa na versão chinesa do MS Word. Os botões da barra de ferramentas são sinais de pontuação chineses. Um dos botões será a marca de ênfase usada no chinês simplificado na China. A marca de ênfase é um ponto abaixo do caractere chinês que é enfatizado quando a direção do texto é horizontal, um ponto à direita do caractere enfatizado quando a direção do texto é vertical.
Não conheço o OpenOffice Basic ou outras linguagens usadas para escrever programas de computador, mas sei que o gravador de macro do Writer pode gravar alguns códigos que podem ser usados para escrever a macro que preciso. E continuo pesquisando no Google para encontrar mais informações e aprender a escrever a macro. Para a maioria dos sinais de pontuação, os códigos são simples.
Por exemplo, para inserir uma marca de parada, os códigos são:
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
Mas o gravador de macro do LibreOffice 3.4 não conseguiu gravar uma macro viável para a marca de ênfase. Na verdade o Writer fechou inesperadamente assim que mudei a marca de ênfase de "(Sem)" para "Ponto" nos Efeitos de Fonte da Caixa de Diálogo de Caracteres do Writer. Fui forçado a baixar e instalar o OpenOffice.org 3.3 e 3.4.
O gravador de macro do OpenOffice.org 3.3 também não consegue gravar, mas o do 3.4 conseguiu. A macro é:
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 não funciona.
Responder1
Encontrei a página da web: http://user.services.openoffice.org/en/forum/viewtopic.php?f=45&t=21813
Uma macro da FJCC me deixou muito feliz porque é curta e sobre como aplicar um efeito nos personagens selecionados, pode ser isso que eu preciso.
Doc = ThisComponent
Selections = Doc.CurrentSelection
FirstSelection = Selections.getByIndex(0)
TextString = FirstSelection.String
UCaseStr = UCase(TextString)
FirstSelection.String = UCaseStr
Então recombinei esse código com as macros do MS Word, do japonês e do Pitonyak A. e encontrei um funcional:
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
Isto é o que eu preciso. Finalmente...