OOoのマクロ
bonnie++が出力したやつを処理しようと思ってOOo Clacのマクロをはじめて使ってみようとしたのだが、さっぱり分からない。何かするたびにディスパッチャーにコマンドを投げなければいかないのか?素のCOMオブジェクトにVBscript(VBじゃないよ)でアクセスしてる気分。
値をアクティブなセルに入力するだけでもこれだけかかる。
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 ---------------------------------------------------------------------- dim args1(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "StringName" args1(0).Value = "348ms" dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())
この方式だと異なる言語でも同じような書き方で同じ処理ができそうだが書きにくいことこの上ないぞ。
やりたいことは、現在選択しているセルの上3つのセルの中身を読んで末尾の単位をそろえた上で平均とって単位文字列を加えたものを出力するというだけでそう難しいことではない。VBAなら10〜20行で書けるだろう。しかしOOoだと無駄に50行ぐらいになりそうなので素のcsvをPythonで処理することにした。