23. 情報共有 Extension作成手順(2023)  
【楽ちんな LibreOffice Extension の作り方】 2023年12月1日 公開

この記事は、「LibreOffice Advent Calendar 2023」のために書かれました。
初心者でも拡張機能を作りやすいように手順をまとめておきます。
備忘録とも言います。
なお、2014年から何か変わってないかのチェックがメインとなります。


ここでは、自作の雛形をご用意しました。
雛形へのリンク
http://tanaka-cs.co.jp/download/TblFrm1.1.oxt

このサンプル拡張機能をダウンロードして、拡張子を .zip に変更、
展開して、中身を見るとこんなファイル構成になっています。

$ tree
.
├── META-INF
│   └── manifest.xml
├── TblFrm
│   ├── Dialog1.xdl
│   ├── Module1.xba
│   ├── TblFrm.xcu
│   ├── dialog.xlb
│   └── script.xlb
└── images
    └── icon.png

これらの雛形を使って、 .oxt ファイルを作ってみましょう。

■マクロとして機能を作成
初心者に敷居が低くて情報量の多い LibreOffice Basic で作ってみます。
「ツール」ー「マクロ」ー「マクロの管理」ー「LibreOffice Basic」をメニューから選択します。
「マイマクロ」を選択し、「管理」をクリックします。
マクロの管理ダイアログで、「ライブラリ」タグを選択します。
「新規作成」をクリックします。
ライブラリ名を入力します。ここでは「hogehoge」と仮定して進めます。
「hogehoge」ライブラリを選択した状態で「編集」をクリックします。

必要な処理を書きます。
情報はGoogle先生に聞けば沢山あります。
ここでは、以下のようにしました。
---------------------------------------------------------
REM  *****  BASIC  *****

Sub Main
Dim oDoc As Object, oText As Object

  oDoc = ThisComponent
  oController = oDoc.getCurrentController()
  oViewCursor = oController.getViewCursor()

  oViewCursor.setString(Date & " " & Time)

End Sub
---------------------------------------------------------
このサンプルは、現在の日付と時刻をWriter文書に挿入します。


デバッグのために、LibO文書側に実行ボタンを配置する方法が楽ちんです。
「表示」ー「ツールバー」で「フォームコントロール」を表示して、
ボタン(OKアイコン)を配置して右クリックして「コントロール」で
属性ダイアログを配置して、イベント「実行時」に、マクロを割り当てます。
フォームコントロールツールバーで、デザインモードをオフにすると
実行出来るようになります。


■デバッグが完了したら、拡張機能としてインストール出来るようにします。
 以下のような手順になります

マクロ編集画面を保存して閉じておく。
「ツール」ー「マクロ」ー「マクロの管理」ー「LibreOffice Basic」をメニューから選択。
出てきたダイアログで「管理」をクリック。
マクロの管理ダイアログで「ライブラリ」の「hogehoge」を選択し、「エクスポート」をクリック
「拡張機能としてエクスポート」を選択して「OK」をクリック
名前をつけて保存する。ここでは「hogehoge」と入力した。

作成された「hogehoge.oxt」の拡張子を .zip に変更して展開する。
$ tree
.
├── META-INF
│   └── manifest.xml
└── hogehoge
    ├── Module1.xba
    ├── dialog.xlb
    └── script.xlb
上記のようなファイル構成になっています。
これを、雛形フォルダに「置換せずに」コピーします。
途中でファイルの置換するか聞かれましたが、今回は置換しませんでした。

置換しなかったのは以下のファイルです。
META-INF/manifest.xml
---------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest>
 <manifest:file-entry manifest:full-path="TblFrm/" manifest:media-type="application/vnd.sun.star.basic-library"/>
  <manifest:file-entry manifest:full-path="TblFrm/TblFrm.xcu"
       manifest:media-type="application/vnd.sun.star.configuration-data"/>
</manifest:manifest>
---------------------------------------------------------
「TblFrm」を「hogehoge」に置換します。
この時点で、フォルダ構成は以下の通りです。
$ tree
.
├── META-INF
│   └── manifest.xml
├── TblFrm
│   ├── Dialog1.xdl
│   ├── Module1.xba
│   ├── TblFrm.xcu
│   ├── dialog.xlb
│   └── script.xlb
├── hogehoge
│   ├── Module1.xba
│   ├── dialog.xlb
│   └── script.xlb
└── images
    └── icon.png

「TblFrm.xcu」を、「hogehoge.xcu」にリネームして「hogehoge」フォルダに移動します。
「TblFrm」フォルダは、もう不要なので削除します。

「hogehoge.xcu」ファイルを編集します。

「jp.co.tanaka-cs.tblfrm」を、固有の名前に置換します。ここでは「test.hogehoge」としました。
「TblFrm」を、「hogehoge」に置換します。

このモジュールはWriter用なので、
「com.sun.star.text.TextDocument」は、そのままにしました。
Calc用なら
「com.sun.star.sheet.SpreadsheetDocument」
Draw用なら
「com.sun.star.drawing.DrawingDocument」
です。他は既存のExtensionを参考にして下さい。
http://extensions.libreoffice.org/
からダウンロードできます。

現時点で、フォルダ構成は以下の通りです。
$ tree
.
├── META-INF
│   └── manifest.xml
├── hogehoge
│   ├── Module1.xba
│   ├── dialog.xlb
│   ├── hogehoge.xcu
│   └── script.xlb
└── images
    └── icon.png
これを、zip形式で圧縮します。
拡張子を .oxt に変更します。

これを実行可能かテストしてみます。
注意しなければいけないのは、既にライブラリが存在するために、インストールでエラーが出ることです。
マクロの管理でライブラリ「hogehoge」を削除しておきます。
デバッグの必要がある時は、.xlb ファイルをインポートしてデバッグできます。

「ツール」ー「拡張機能マネージャ」で、作成したExtensionを追加します。
一度Writerを閉じて、再度Writerを開くとツールバーに「hogehoge」が追加されます。
小窓で表示される場合は、任意のツールバーの位置にドラッグ&ドロップしておきましょう。

これで、「hogehoge」ボタンを押す度にWriter文書に現在日時が挿入されます。


以上、メニューの表記が9年前と少し変更になったりしましたが、基本的に何も変わっていませんでした。
変わらないのは良いことだ。


前へ次へ