LibreOffice(1)マクロ言語はどれを選択する?

2014-01-02

旧ブログ

t f B! P L

インターネットが使える環境ならJavaScriptマクロが使えるGoogleスプレッドシートで十分です。残念ながら私の職場のパソコンはインターネットには繋がっていないのでスタンドアローンでマクロが使える表計算ソフトとしてLibreOffice Calcを使うことにしました。

表計算ソフトはちょっとしたことをするのにとても便利


表計算ソフトはなにかと便利です。 

数値計算に使うだけでなく文字列操作の関数を使えば文書作成にも使えます。

時刻表.Locky(10)時刻表データ作りを助けるスプレッドシートを作りましたではGoogleスプレッドシートを使いました。

Googleスプレッドシート(3)Google Apps Scriptを使ってマクロが作れるでGoogleスプレッドシートでもマクロが使えることを知ったので、そのうちマクロも使ってみたいと思います。

でもGoogleスプレッドシートはインターネットにつながっていないと使えません。

私の職場では業務でネットに繋がったパソコンを使うのですが、そのネットはインターネットには繋がっていません!

OpenOffice.orgが入っているのですが起動にすごく時間がかかったり当時のエクセルと使い勝手が違っていたりしてとても使いにくいです。

いまはエクセルもリボンメニューといって以前と全く見た目が変わってしまっていまさら覚えようという気にもなりません。

ということでスタンドアローンでマクロが使える表計算ソフトとしてLibreOfficeを使うことにしました。

LibreOfficeをインストール


ホーム » LibreOffice : 自由なオープンソースのオフィススイート ここからリンクをたどってメイン・インストールパッケージを通常インストールしました。

 

ヘルプパッケージをインストールしないと、メニューのヘルプ→LibreOfficeヘルプ、でオンラインヘルプに飛びます。

LibreOffice Windows, バージョン 4.1.4, 日本語 です。

表計算ソフトLibreOffice Calcを起動します。


OpenOffice.orgの頃に比べると起動がすごく速くなったように思います。

見た目もリボンメニューになる前のエクセルにそっくりです。

4つのマクロ言語が使える


ツール→マクロ→マクロを管理、を見るとマクロで使える言語が複数あることがわかります。


LibreOffice Basic

BeanShell

JavaScript

Python

4つも選択肢があります。どれを使えばよいのやら、、、

(H26.2.22追記。Javaでもマクロが作れます。コンパイルが必要ですけど。ツール→マクロを実行、でマクロセレクターを開いてLibreOfficeのマクロ、のHelloWorldの中にorg.libreoffice.examle.java_script.HelloWorld.printHWというサンプルマクロがあります。LibreOffice(24)NetBeans7でJavaのマクロを作成参照)


言語を選択するとマクロの選択画面がでます。

 ここで「マクロの記録先」の「LbireOffficeマクロ」のなかにサンプルマクロがあります。

サンプルマクロを選択して「編集ボタン」をクリックするとマクロが見れます。


LibreOffice Basic


LibreOffice BasicはエクセルのVBAと似ています。

エクセルのときは「新しいマクロの記録」を多用してVBAを学びましたがLibreOfficeにはその機能はありません。

汎用性もなくてOpenOffice.org Basicで挫折した経験もあるので、身を入れて使ってみようという気にはなりません。

LibreOfficeで編集でき、デバッガもついています。


 BeanShell

 BeanShellはスクリプト言語ではないJavaをスクリプト言語として使うJava仮想マシン(JRE)で動くスクリプト言語です。(BeanShell$$$\ne$$$JavaSciptなのでこんがらがりますね。)

BeanShellでJavaのクラスを定義できないが、Javaで定義されたクラスは呼び出せるそうです。

Debug Windowで編集はできますが、デバッガはLibreOfficeとは別に用意しないといけません。


JavaScript


JavaScriptマクロで編集ボタンをクリックするとRhino JavaScript Debuggerが起動し編集とデバッグできます。

このRhino JavaScript Debuggerの動作にはJava仮想マシン(JRE)が必要です。


 Python(パイソン)

Pythonは他の3つの言語と違って「編集」ボタンはクリックできずLibreOfficeからはスクリプトの中身すら見れません。
(2017.10.10追記。拡張機能APSOを使うと簡単にPythonマクロをエディタで開くことができるようになります。LibreOffice5(87)Pythonマクロのための拡張機能APSOのインストール参照。)

LibreOfficeとは別に編集とデバッガを用意しないといけません。

Java仮想マシン(JRE)のインストールなしでマクロを実行させたい


職場のパソコンに新たにソフトをインストールするためには管理者の許可が必要です。

申請が面倒なのでJava仮想マシン(JRE)のインストールは避けたいです。

LibreOfficeもデータベースソフトLibreOffice Baseの利用にはJREが必要ですがLibreOffice CalcはJREがなくても動きます。

なので問題は完成したマクロがJREがなくてもちゃんと動くかどうかです。

LibreOffice Basicは当然動くはずなので、それ以外の3つについて確かめます。

サンプルマクロにLibreOffice Writerで「Hello World」を表示させるマクロが用意されているのでそれを使います。

LibreOffice Writerを起動して、ツール→マクロ→マクロを管理。

それぞれBeanShellはhelloworld.bsh、JavaScriptはhelloworld.js、PythonはHelloWorldPythonを選択して「実行」ボタンをクリックします。

順番に実行するとこんな結果になります。


今度はJREを使わないで同じことをやってみます。

ツール→オプション→LibreOffice→詳細、でJREを使用するかどうかの選択ができます。


「Java実行環境(JRE)を使用」のチェックをはずして「OK」ボタンをクリックします。

LibreOffice Writerを再起動します。

この状態で先ほどと同じように各言語のHelloWorldマクロを実行してみます。

まずBeanShellでやってみます。

ツール→マクロ→マクロを管理、からBeanShellを選択するとJREを有効にするように促されます。


JREがなくても動くかどうかを確認したいので、ここでは「いいえ」を選択します。


JREが有効のときと同様にマクロ選択画面が現れます。

ところがここからマクロが選択できずhelloworld.bshは実行できませんでした。


+アイコンが消えてしまって「LibreOfficeのマクロ」の中身を見せてくれないのです。

JavaScriptでも同様の結果でした。

BeanShellJavaScriptで作ったマクロの実行にはJREは必須のようです。

PythonはJREを有効にすることを促すダイアログがでてきますが、「いいえ」を選択してもHelloWorldPythonは実行できました。

LibreOffice BasicではJREを有効にすることを促すダイアログはでてきませんでした。

以上の結果からPythonを使ってマクロを作成することにします。

H26.1.19追記。LibreOffice自体はJREをインストールしないとJREをインストールを促すダイアログが頻繁にでてくるという記事山賀正人のブログ: JavaなしでLibreOfficeを使う方法をみつけました。OpenOffice.orgをインストールしたときはそんなことはなかったので早速確認してみます。)

(H26.1.22追記。JREが入っていないパソコンにLibreOffice4.1.4, 日本語 をインストールしてみました。起動や普通の操作はとくに問題なさそうな感じです。上記の通りPythonマクロも動きました。ただツール→マクロ→マクロを管理、を選択するとJREが必要であるというダイアログがでてくるのは上記の通り同じです。JREなしでも動くのでPythonマクロのときはJREが必要であるというダイアログがでないようにしたいですね。)

参考にしたサイト


ホーム » LibreOffice : 自由なオープンソースのオフィススイート
LibreOffice日本語版ページ

スクリプティング LibreOffice - LibreOffice Help
公式ヘルプ

次の関連記事:LibreOffice(2)Pythonの統合開発環境PyCharmのインストール

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ