cafegale(LeafCage備忘録)

LeafCage備忘録(はてなダイアリー)と統一しました。

LibreOffice (OpenOffice) で python を使ってマクロを書く

マクロのファイルは次のディレクトリ以下に.pyファイルを用意する(windows)。

C:\Users\ユーザ名\AppData\Roaming\LibreOffice\4\user\Scripts\python

ポータブル版では

Data/settings/user/Scripts/python

基本的に、勝手に定義されるグローバル変数 XSCRIPTCONTEXT から getDesktop() や getDocument() を呼び出して色々やってりゃいい感じ。
uno についてはよくわからない。
関数が1つのマクロの単位なので、公開するマクロ(関数)を制限したいときにはスクリプトの最後に g_exportedScripts 変数を定義して、公開する関数名をタプルで列挙する。

設定など

JavaなしでLibreOfficeを使う方法: 山賀正人のブログ
Javaがないとメッセージがいちいちうるさいので、ポータブル版は App\libreoffice\share\extensions 以下の nlpsolver と wiki-publisher をどこかにでも待避させておこう。

オプションのセキュリティからマクロセキュリティを「中」にしておく。これをしなくてもpythonマクロは使えるが、シート埋め込みのマクロを使いたいため。