LibreOffice Calcは、ユーザーがPythonで独自のマクロを作成することを可能にしますが、これらのマクロはユーザーのPC、つまりプログラム自体にのみ保存できます。残念ながら、LO CalcにはPythonスクリプトを*.odsファイル自体に保存する組み込み機能がありません。これは、スクリプトをデータと一緒に別のユーザーに転送できないため、これらのスクリプトでの作業に不便をもたらします。
この問題は手動でのみ解決できます。つまり、必要なPythonスクリプトを追加して*.odsファイルを再パッケージ化することです。
それでは、PythonスクリプトをODSファイルに埋め込み、他のユーザーに送信できるようにする方法を見てみましょう。
すべてのPythonマクロは次のフォルダーに保存されます:
%APPDATA%\LibreOffice\4\user\Scripts\python
Scriptsフォルダーとpythonフォルダーが存在しない場合は、手動で作成する必要があります。
以下に示すのは、HelloPythonマクロのPythonスクリプトです。これはフレーズ"Hello Python!"をLibreOffice Calcの"B8"セルに書き込みます。
新しいマクロを追加するには、myPyScripts.pyファイルを作成し、Notepad++ (またはWindows Notepad) で開き、以下のテキストをそこにコピーします:
from scriptforge import CreateScriptService
def HelloPython():
doc = CreateScriptService("Calc")
doc.SetValue("B8", "Hello Python!")
return None
その後、Windows Notepadを閉じ、LibreOffice Calcに戻ります。このスクリプトを実行するには、メニューTools - Macros - Organise Macros - Python...を開き、"My Macros"を選択し、"myPyScripts"フォルダーを展開し、HelloPythonを選択してRunボタンをクリックします。
Pythonスクリプトを*.odsファイルに転送するには、任意のアーカイバー(7-zip、WinRARなど)を使用して、それを個別のフォルダーに解凍する必要があります。はい、その通りです。*.odsファイルは単なるフォルダーとファイルのセットのアーカイブです。
次に、この解凍されたフォルダー内に、サブフォルダーScriptsを作成し、その中にサブフォルダーpythonを作成します。次のステップとして、myPyScripts.pyファイルをpythonフォルダーにコピーします。
Pythonマクロがあるファイルへのパスも明示的に記述する必要があります。そのためには、META-INFフォルダー内のmanifest.xmlファイルを編集し、次の行を追加します:
<manifest:file-entry manifest:full-path="Scripts/python/myPyScripts.py" manifest:media-type="application/binary"/>
次に、以前に解凍したフォルダーの内容を、変更を加えた状態で*.zipアーカイブに圧縮します。次に、このアーカイブの名前を変更し(元のファイルを上書きしないように)、拡張子を*.zipから*.odsに変更します。
あなたは、拡張機能YLC Utilitiesをインストールすることで、Pythonで書かれた準備された一連の関数とユーティリティを使用することもできます。
これにより、LibreOffice Calcで開かれるすべてのファイルで、この機能が利用可能になります。