LibreOffice(31)Pythonマクロをドキュメントファイルに埋め込む

ラベル: ,

前の関連記事:LibreOffice(30)PythonのSQLiteモジュールを導入


Pythonマクロをドキュメントファイルに埋め込む方法は以前どこかで読んだのに、どのページだったか探し当てられずあれこれ検索してたら自分の作ったリンク集にたどり着きました、、、
(2014.4.7追記。以下のやり方よりもLibreOffice(39)7-ZipのGUIで楽にPythonマクロをドキュメントに埋め込む方法をお勧めします。)

LibreOfficeのドキュメントファイルはzip形式で圧縮されている


Embedded within an OpenOffice.org's documentに従います。

Calc(1)課題1:LibreOffice CalcのPythonマクロを動かすで使ったcalc_overview.pyをCalcのファイルPy-macroEmbedded.odsに埋め込みたいと思います。


まずCalcのメニューから、ファイル→名前を付けて保存、でPy-macroEmbeddedで名前をつけて適当なフォルダに保存します。

Py-macroEmbedded.odsはzipファイルになっているのでこれを解凍します。

LibreOfficeのドキュメントファイルはOpenDocumentフォーマットという形式で保存されており日本語の解説としては以下があります。

「OpenDocumentフォーマット」はオフィス環境の何を変えるのか? (1/2) - ITmedia エンタープライズ

私のパソコンには圧縮・解凍ソフト 7-Zipをインストールしてありますのでこれを使って解凍します。

エクスプローラでPy-macroEmbedded.odsを選択して右クリック→7-Zip→"Py-macroEmbedded\"に展開。

Py-macroEmbedded.odsに含まれていたファイルが入ったPy-macroEmbeddedフォルダができます。

C:\Py-marcoEmbedded>tree /f
│  content.xml
│  manifest.rdf
│  meta.xml
│  mimetype
│  settings.xml
│  styles.xml

├─Configurations2
│  ├─accelerator
│  │      current.xml
│  │
│  ├─floater
│  ├─images
│  │  └─Bitmaps
│  ├─menubar
│  ├─popupmenu
│  ├─progressbar
│  ├─statusbar
│  ├─toolbar
│  └─toolpanel
├─META-INF
│      manifest.xml

└─Thumbnails
        thumbnail.png

こんなにたくさんファイルが入っています。

Py-macroEmbeddedフォルダ中に新たに「Scripts」というフォルダを作ります。

さらにScriptsフォルダの中に「python」というフォルダを作ります。

その中にcalc_overview.pyを入れます。

今度はMETA-INFフォルダに入っているmanifest.xmlをワードパッドなどで開きます。
<?xml version="1.0" encoding="UTF-8"?>
 <manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2">
 <manifest:file-entry manifest:full-path="/" manifest:version="1.2" manifest:media-type="application/vnd.oasis.opendocument.spreadsheet"/>
 <manifest:file-entry manifest:full-path="Thumbnails/thumbnail.png" manifest:media-type="image/png"/>
 <manifest:file-entry manifest:full-path="styles.xml" manifest:media-type="text/xml"/>
 <manifest:file-entry manifest:full-path="content.xml" manifest:media-type="text/xml"/>
 <manifest:file-entry manifest:full-path="meta.xml" manifest:media-type="text/xml"/>
 <manifest:file-entry manifest:full-path="settings.xml" manifest:media-type="text/xml"/>
 <manifest:file-entry manifest:full-path="manifest.rdf" manifest:media-type="application/rdf+xml"/>
 <manifest:file-entry manifest:full-path="Configurations2/accelerator/current.xml" manifest:media-type=""/>
 <manifest:file-entry manifest:full-path="Configurations2/" manifest:media-type="application/vnd.sun.xml.ui.configuration"/>
 <manifest:file-entry manifest:full-path="Scripts/python/calc_overview.py" manifest:media-type=""/>
 <manifest:file-entry manifest:full-path="Scripts/python/" manifest:media-type="application/binary"/>
 <manifest:file-entry manifest:full-path="Scripts/" manifest:media-type="application/binary"/>
</manifest:manifest>

12行目、13行目、14行目を挿入して保存して閉じます。

12行目にはpyファイル名calc_overview.pyが入っています。

解凍してpyファイルを挿入したフォルダを再圧縮する


あとはPy-macroEmbeddedフォルダを再圧縮してCalcのファイルに戻します。

Py-macroEmbeddedフォルダを選択して右クリックして圧縮してはいけません。

Py-macroEmbeddedフォルダを開いて中身をすべて選択した状態で右クリック→7-Zip→圧縮。


「書庫形式」は「zip」を選択。

「変更方法」は「全てのファイルを上書き」を選択。

ほかはデフォルトのままです。

「OK」をクリック。

Py-macroEmbedded.zipファイルができたはずです。

このファイルを右クリック→7-Zip→開く、でScriptフォルダの中をみてcalc_overview.pyが入っていることを確認します。

あとはこのPy-macroEmbedded.zipファイルの拡張子をzipからodsに変更して完成です。

マクロのセキュリティレベルの設定を変更する



Calcのメニューでツール→オプション、LibreOffice→セキュリティ→マクロセキュリティ。


セキュリティレベルを「中」に設定します。

これでドキュメントに埋め込まれたマクロが実行できるようになります。

マクロを埋め込んだPy-macroEmbedded.odsをCalcで開きます。


「マクロの有効化」。

これでPy-macroEmbedded.odsが開きます。

ツール→マクロ→マクロを実行。


ライブラリからPy-macroEmbedded.odsのなかにあるcalc_overviewを選択して「実行」。


LibreOffice Calcのシートにこのように入力されたはずです。

(図中のPy-macoEmbedded.odsはPy-macroEmbedded.odsの綴り間違いです。)

参考にしたサイト


Python as a macro language - Apache OpenOffice Wiki
マクロをLibreOfficeファイルに埋め込む方法が書いてあるページ。

「OpenDocumentフォーマット」はオフィス環境の何を変えるのか? (1/2) - ITmedia エンタープライズ
LibreOfficeのドキュメントファイルに使われているOpenDcumentフォーマットについての解説。

圧縮・解凍ソフト 7-Zip
入れておくと便利なソフトです。

デジタル署名の使用法 - LibreOffice Help
デジタル署名は認証局からもらうようです。認証局 - Wikipedia参照。

ファイルに埋め込まれたマクロを外部から実行するには?
将来関係ありそうなのでここにリンクをメモしておきます。

次の関連記事:LibreOffice(32)デベロッパーガイド4:コンポーネントフレームワーク

PR

0 件のコメント:

コメントを投稿