2016年12月25日日曜日

LibreOffice(calc)のBasicマクロからPythonマクロを実行する


下記URLによると、LibreOffice のBasicマクロから、Python マクロを実行できるようです

そこで、「awscliのdescribeで取得したjsonデータをLibreOffice(calc)に読み込むPythonマクロ」で作成したPythonマクロをBasicマクロから実行してみました。


1.Python マクロの修正


awscliのdescribeで取得したjsonデータをLibreOffice(calc)に読み込むPythonマクロ」で作成したPythonマクロを以下のように修正します。(赤字部分)

#coding:utf-8
import json

def amiList(*args):


2.Basicマクロの作成


BASICマクロを作成します。
Python マクロを実行するソースコードは以下のとおり。
赤字部分が、スクリプトファイル名です。
緑色部分が、関数名です。

Sub Main

    ' JSONデータ入力. Pythonマクロ(TestScript.py の amiList)を実行
    Dim a(0),b(0),c(0) As Variant
    scpr = ThisComponent.getScriptProvider
    scmod = scpr.getScript("vnd.sun.star.script:TestScript.py$amiList?language=Python&location=user")
    ret = scmod.invoke(a,b,c)

End Sub

このソースを LibreOffice に登録します。
LibreOffice(calc) を起動して、[ツール] > [マクロ] > [マクロの管理] > [LibreOffice Basic] を選択すると下図の画面が表示されます。
下図のように赤枠を選択して、登録先を選択し、[編集]ボタンをクリックします。



下図の画面が表示されたら、ソースコードを記載して保存します。




3.Basicマクロの実行


Basic マクロの実行には、JRE が必要です。
[ツール] > [オプション] を選択すると、下図の画面が表示されます。
[詳細] をクリックして、JRE を指定します。



Basicマクロを実行します。
[ツール] > [マクロ] > [マクロの実行] を選択すると下図の画面が表示されます。
下図の赤枠のように選択して [実行] ボタンをクリックします。



BasicマクロからPythonマクロが実行され、以下のように Jsonデータを読み込めました




Basicマクロに比べて、Pythonマクロは、情報が少なくて、セルの操作などえ使用法がわからないことが多かったのですが、
これで、Jsonデータの入力だけ、Pythonマクロで行い、セルの操作などは、Basicマクロで実施できるようになりました。