OpenOffice.org マクロ習得その1

国内でも OpenOffice.org のマクロを書く人が増えてきた気がします。私の場合は OOo Basic のコードはあんまり書かなくなって、マクロは専ら Python で書いています。使う API は全く同じで言語に依存した部分や値の型の取り扱いがちょっと違う程度です。マクロではテキスト処理が多くなるので、配列や辞書、正規表現が存分に利用できる Python の方が向いているわけです。

というのはおいておきます。ここで目指すのは、フォーラムや掲示板などで質問を見たときに、こんな感じにすればいいんじゃないかな・・・と思い浮かぶようになることです。OOo 3.3 では UNO IDL の定義ファイルが 4000 以上ありますので頑張らなくてはいけませんけれども。IDL を全て把握するのは大変ですので、メニューの機能をひとつずつマクロで実現してみると案外すぐに色々なことができるようになります。

マクロで何かをやるとしても、OpenOffice.org 流の方法でやることが大切です。

  • マクロで無理にやろうとせずに既存の機能を利用する。
  • スタイルを多用する。多用せずとも、ページの書式設定はスタイルですが・・・。
  • バグに遭遇したら注意深く避ける。OOo Basic ではランタイム関数にバグがあることがあります。

最初なので準備。

  1. プログラミング言語を使ったことがないという人は厳しいので、OpenOffice.org Basic で検索して WikiBook などを読んでみてください。
    Python でマクロを書き始めたい!という人は、Pythonチュートリアルをひと通りこなしてみてください。
  2. OpenOffice.org SDK をダウンロードしてインストールしておく。同梱の IDL リファレンスをブラウザのブックマークに入れておくのを忘れずに。
  3. オブジェクトインスペクタを入手してインストールしておく。http://d.hatena.ne.jp/hanya_orz/20091215/p3 など。あるのとないのとでは大きく違います。

OOo Basic の IDE

OOo Basic での基本的なコーディング方法を説明します。OOo Basic は一応組み込まれた IDE を持っていますが、機能についてはあんまり期待してはいけません。デバッグの機能はありますが、関数名の補完などの機能はありません。

  1. 新規 Writer ドキュメントを作成。
  2. メインメニューからツール - マクロ - マクロの管理 - OpenOffice.org Basic を選択。
  3. 左側のツリーに表示されている無題のドキュメントをダブルクリックして展開。
  4. Standard ライブラリを選択、右側の新規ボタンを押します。
  5. モジュール名はそのままで OK をクリック。
  6. OOo Basic IDE が開きます。

コントロールツールチップを見たりすれば大体の機能については分かると思います。
HelloWorld 信奉者の人は次のようにコードを修正して実行ボタンを押してください。

Sub Main
  msgbox "Hello OpenOffice.org Basic!"
End Sub

OpenOffice.org のヘルプは OOo Basic のランタイム関数については充実しているので、一度目を通しておくといいかもしれません。

Python マクロを作成

Python でマクロを書く人は OOo Basic で書く人よりも最初は苦労するかもしれません。Python 向けには IDE も用意されていません。ドキュメントにファイルを埋め込むことも大変です。

Python のマクロはユーザーのプロファイルの Scripts/python 以下に保存します。

  1. 適当に hello.py ファイルを作成、保存場所に保存する。
  2. メニューからツール - マクロ - マクロの管理 - Python を選択。
  3. マイマクロをダブルクリックして展開すると保存したファイルがあることを確認。

コンソールから起動していなければ出力はみられませんが、次のように簡単にハローと叫ぶこともできます。

def hello(*args):
    print("Hello Python!")

IDL リファレンスの読み方

SDK をインストールしたら、sdk/docs/common/ref/module-ix.html ファイルをウェブブラウザで開いてみてください。
よくわからない・・・と思ったら以下を読んでみてください。http://d.hatena.ne.jp/hanya_orz/20091211/p1

オブジェクトインスペクタ MRI の使い方

オブジェクトインスペクタの MRI をインストールしてあれば、ドキュメントウィンドウのメインメニューからツール - アドオン - MRI を選択してみてください。小さなウィンドウが開きます。Tool - Configuration で SDK のパスと ウェブブラウザのパスを設定するのを忘れずに。
テキストフィールドの適当な行にカーソルを置いて、マウスでダブルクリックしてみてください。値を取得して表示してくれます。単純に表示できないときにはオブジェクトが切り替わります。

組み込みのヘルプがあるので目を通すと使い方が一層分かると思います。

あんまり面白くなかったかもしれませんが、次回からはドキュメントオブジェクトをうにゃうにゃしていきます。