Как написать макрос, чтобы выделить выделенные слова знаком выделения?
Как я могу написать макрос для OpenOffice Writer, который получает слова / символы, которые я выделил мышью, с меткой выделения, например точкой над словами / символами?
Я пытался записать макрос, но не получилось.
Я надеюсь, что кто-то здесь может помочь мне
Я пытаюсь написать макрос для OpenOffice Writer и LibreOffice Writer. Этот макрос добавит панель инструментов в Writer, аналогично китайской панели инструментов пунктуации в китайской версии MS Word. Кнопки панели инструментов являются китайскими знаками препинания. Одной из кнопок будет знак подчеркивания, используемый на китайском упрощенном языке. Знак выделения - это точка под китайским символом, которая выделяется, когда направление текста горизонтальное, и точка справа от выделенного символа, когда направление текста вертикальное.
Я не знаю OpenOffice Basic или других языков, используемых для написания компьютерных программ, но я знаю, что рекордер макросов Writer может записывать некоторые коды, которые можно использовать для написания нужного мне макроса. И я продолжаю гуглить, чтобы найти больше информации и научиться писать макросы. Для большинства знаков препинания коды просты.
Например, чтобы вставить метку остановки, используйте следующие коды:
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
Но рекордер макросов LibreOffice 3.4 не смог записать работающий макрос для метки выделения. На самом деле Writer неожиданно закрылся, как только я изменил метку выделения с "(Без)" на "Dot" в диалоговом окне "Эффекты шрифта" в символе Writer. Я был вынужден загрузить и установить OpenOffice.org 3.3 и 3.4.
Макро-рекордер OpenOffice.org 3.3 также не может записывать, но один из 3.4 сделал это. Макрос это:
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
Этот макрос не работает.
1 ответ
Я нашел веб-страницу: http://user.services.openoffice.org/en/forum/viewtopic.php?f=45&t=21813
Макрос от FJCC сделал меня очень счастливым, потому что он короткий и о том, как применить эффект к выбранным персонажам, это может быть то, что мне нужно.
Doc = ThisComponent
Selections = Doc.CurrentSelection
FirstSelection = Selections.getByIndex(0)
TextString = FirstSelection.String
UCaseStr = UCase(TextString)
FirstSelection.String = UCaseStr
Затем я скомбинировал этот код с макросами из MS Word, японского языка и Питоняка А. и нашел работоспособный:
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
Это то, что мне нужно. В заключение...