
マウスで選択した単語/文字の上にドットのような強調マークを表示する OpenOffice Writer のマクロを作成するにはどうすればよいでしょうか?
マクロを記録しようとしましたが、失敗しました。
誰かが私を助けてくれるといいのですが
私は OpenOffice Writer と LibreOffice Writer 用のマクロを書こうとしています。このマクロは、中国語版 MS Word の中国語句読点ツールバーに似たツールバーを Writer に追加します。ツールバーのボタンは中国語の句読点です。ボタンの 1 つは、中国の簡体字中国語で使用される強調マークです。強調マークは、テキスト方向が水平の場合に強調される中国語文字の下のドットで、テキスト方向が垂直の場合に強調される文字の右側のドットです。
私は OpenOffice Basic やコンピュータ プログラムの作成に使用される他の言語については知りませんが、Writer のマクロ レコーダーで必要なマクロの作成に使用できるコードを記録できることは知っています。そして、より多くの情報を見つけてマクロの作成方法を学ぶために Google 検索を続けています。句読点のほとんどについては、コードは単純です。
たとえば、停止マークを挿入する場合のコードは次のようになります。
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 の文字ダイアログ ボックスのフォント効果で強調マークを「(なし)」から「ドット」に変更すると、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、日本語、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
これが私に必要なものです。ついに...