Como escrever uma macro para obter uma marca de ênfase nas palavras selecionadas?

Como escrever uma macro para obter uma marca de ênfase nas palavras selecionadas?

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...

informação relacionada