
마우스로 선택한 단어/문자에 점과 같은 강조 표시를 가져오는 OpenOffice 작가용 매크로를 어떻게 작성할 수 있습니까?
매크로 기록을 시도했지만 실패했습니다.
여기 누군가가 나를 도울 수 있기를 바랍니다.
OpenOffice Writer 및 LibreOffice Writer용 매크로를 작성하려고 합니다. 이 매크로는 MS Word 중국어 버전의 중국어 구두점 도구 모음과 유사한 도구 모음을 Writer에 추가합니다. 도구 모음의 버튼은 중국어 구두점입니다. 버튼 중 하나는 중국에서 중국어 간체로 사용되는 강조 표시입니다. 강조 표시는 문자 방향이 가로일 때 강조되는 한자 아래의 점, 세로 방향일 때 강조되는 문자의 오른쪽에 있는 점입니다.
저는 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의 매크로 레코더는 강조 표시에 대해 실행 가능한 매크로를 기록하지 못했습니다. 실제로 라이터의 문자 대화 상자의 글꼴 효과에서 강조 표시를 "(없음)"에서 "점"으로 변경하자마자 라이터가 예기치 않게 종료되었습니다. 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, 일본어 및 Pitonyak A.의 매크로와 다시 결합하여 실행 가능한 코드를 찾았습니다.
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
이것이 나에게 필요한 것입니다. 마지막으로...