Macros in Open Source Office Suites for Dummies 0001 MsgBox01 OK with BeanShell

以前、StarBasicマクロで書いたものをOpenOfficeやLibreOfficeでは他の言語でMacroを書くことが出来るようなので試してみる。BeanShell,Python,javascriptがダウンロードインストールした環境では標準で使用できるようである。Ubuntuなどに最初から入っているLibreOfficeだとデフォルト状態ではBasicだけのようだがapt installで関連パッケージを入れると他の言語も使用できるようである。導入方法は別途準備予定。

まずは個人的には一番慣れているのがJava環境なので、ほぼほぼJavaだろうという認識のBeanShellで書き換えてみる。しかし、参考になるサイトがあまり見つからない。それらしいのを見つけても思ったように動作しない。導入すると勝手についてくるサンプルもなぜか動かない。。いろいろ探した結果 https://pineplanter.moo.jp/non-it-salaryman/2016/05/25/libreoffice-beanshell-1st/  を参考に

new JOptionPane().showMessageDialog(null, "Hello from beanshell" , null,JOptionPane.PLAIN_MESSAGE );
return 0;
// BeanShell scripts in LibreOffice should always return 0

と書いて実行すると、uno関連パッケージとか使っていないのに普通に動いた。

BeanShell MsgBox0001

普通にJava環境のswingで動作していてOfficeSuiteの機能でない気がするのだがMsgBox同様の動作すればこの場合実用的に問題でないように思うのでこのままにしておく。https://docs.oracle.com/javase/jp/6/api/javax/swing/JOptionPane.html#showMessageDialog(java.awt.Component,%20java.lang.Object,%20java.lang.String,%20int,%20javax.swing.Icon)  をみる限り、ShowMessageDialogで4つ目の引数messageTypeにPLAIN_MESSAGEを指定した時の動作がほぼ同じように思えたのでそうしている。

public static void showMessageDialog(Component parentComponent,
                                     Object message,
                                     String title,
                                     int messageType,
                                     Icon icon)
                              throws HeadlessException

titleに"0001"を指定してみる。

new JOptionPane().showMessageDialog(null, "Hello from beanshell" , "0001",JOptionPane.PLAIN_MESSAGE );
return 0;
// BeanShell scripts in LibreOffice should always return 0


BeanShell MsgBox0001 with title

動作確認環境

OS: Ubuntu 24.04 LTS

$ grep DISTRIB_DESCRIPTION /etc/lsb-release
DISTRIB_DESCRIPTION="Ubuntu 24.04 LTS"

copy

Office Suites: LibreOffice 24.2.5

$ apt list -a libreoffice-base
一覧表示... 完了
libreoffice-base/noble-updates,noble-security 4:24.2.5-0ubuntu0.24.04.2 amd64
libreoffice-base/noble 4:24.2.2-0ubuntu1 amd64

copy

参照

staroffice macro menu
MsgBox macro menu
0001 MsgBox type0 starbasic libreoffice
0001 MsgBox type0 starbasic openoffice
0001 MsgBox type0 vbaoption libreoffice
0001 MsgBox type0 vbaoption openoffice
0001 MsgBox type0 beanshell libreoffice
0001 MsgBox type0 beanshell openoffice
0001 MsgBox type0 javascript libreoffice
0001 MsgBox type0 javascript openoffice
0001 MsgBox type0 python libreoffice
0001 MsgBox type0 python openoffice

この記事が気に入ったらサポートをしてみませんか?