仕方がないので、ネット上を這いずり回った。で以下の情報ソースを確保。
http://hermione.s41.xrea.com/pukiwiki/index.php?OOoPython
http://d.hatena.ne.jp/hanya_orz/20091214/p1
http://udk.openoffice.org/python/python-bridge.html
http://api.openoffice.org/docs/DevelopersGuide/DevelopersGuide.xhtml
気を取り直して作業続行。
まず、環境から整える。
- OpenOffice.org 3.1.1
まずこれがないとはじまらない。 - Python 2.6.1
マクロを作成するための、エディタとして IDLE を使いたかっただけ。単なるテキストエディタでも、eclipse の Pydev でも、とにかくテキスト編集できて、UTF-8 で保存できればなんでもよい。
OpenOffice.org は 32bit 版、Python は 64bit 版なのが悪いのかもしれない。
一応手順を書いておくが、この方法で出来る保障はないので悪しからず。
戦略としては、至って簡単。sys.path に UNO パッケージの(uno.py とかがある)場所を追加する。
IDLE 上で以下を実行してみた。(指定したパスは Vista 64bit 版での場合)
>>> import sys
>>> sys.path.append('C:\\Program Files (x86)\\OpenOffice.org 3\\Basis\\program')
>>> import uno
Traceback (most recent call last):
File "
import uno
File "C:\Program Files (x86)\OpenOffice.org 3\Basis\program\uno.py", line 33, in
import pyuno
ImportError: DLL load failed: %1 は有効な Win32 アプリケーションではありません。
と、怒られた。orz
懲りずに、eclipse(64bit)に Pydev を入れて、OpenOffice.org に付いてきた Python を利用しようとしたら、python.exe を指定したところで、エラーがでた。素直に 32bit にすれば問題ないのだろうが、生憎この PC は、64bit で地獄を見るためのものなので、狙い通りなのだ!
結局 IDLE は、便利なテキストエディタとして使うことにした。
では、再び気を取り直して。
マクロを格納する場所を確認する。Vista 64bit の場合は、以下に格納する。
python ディレクトリは、なかったので作成した。
<ユーザホーム>\AppData\Roaming\OpenOffice.org\3\user\Scripts\python
上記の場所に、helloWorld.py というファイル名で以下の内容を作成する。
#!
# -*- coding: utf_8 -*-
import uno
def helloWorld():
desktop = XSCRIPTCONTEXT.getDesktop()
frame = desktop.getCurrentFrame()
win = frame.getContainerWindow()
toolkit = win.getToolkit()
rect = uno.createUnoStruct("com.sun.star.awt.Rectangle")
title = "title"
msg = u"メッセージ"
msgbox = toolkit.createMessageBox(win, rect, "messbox", 1, title, msg)
msgbox.execute()
g_exportedScripts = helloWorld,
ながい・・・もっとスマートな HelloWorld はないものか・・・
最後の g_exportedScripts は、マクロ実行画面で表示する関数を定義している。この定義をしなかった場合は、ファイル中の全ての関数がリストされる。ちなみに、行の最後のカンマは、タプル値として代入するために必要。
ファイルを作成したら、OpenOffice.org Calc (Base でも Writer でもなんでもいい)を起動して、「ツール」メニュー > 「マクロ」 > 「マクロを実行」を選択。
マクロの選択ダイアログが表示される。
ライブラリの中から、「マイマクロ」 > 「helloWorld」を選択すると、マクロ名に「helloWorld」が表示されるので、選択して「実行」ボタンを押す。
画面にメッセージダイアログが表示されれば成功。