LibreOffice(34)Basicマクロのモジュールやライブラリーは改名不能?

ラベル:

前の関連記事:LibreOffice(33)デベロッパーガイド5:ディスパッチフレームワーク


LibreOffice Basicマクロのモジュールやライブラリーの管理に手間取ったので操作法のメモです。

マクロ名がプロシージャ名、プロシージャはモジュール内にありモジュールはライブラリー内にある



LibreOfficeのいずれかのアプリのメニューから、ツール→マクロ→マクロの管理→LibreOffice Basic、で適当なマクロを選択して「編集」をクリックするとLibreOffice Baicの統合開発環境(IDE)が起動します。

LibreOfficeのマクロは「Sub ~ End Sub」から成るプロシージャが最小単位になっています。(プロシージャと関数)

このプロシージャを書き込んだファイル(xba)をモジュールといい、モジュールを入れたフォルダをライブラリといいます。

マクロセレクターのマイマクロに表示されるライブラリーはC:\Users\ユーザー名\AppData\Roaming\LibreOffice\4\user\basicの同名フォルダになります。

モジュールはそのフォルダの中にある同名のxbaファイルになります。

これらは隠し属性になっているので通常はエクスプローラからは直接操作できません。


IDEのオブジェクトカタログにはこのように表示されます。

この図では「Standard」がライブラリー、「Module1」、「Module2」、「Module3」がモジュールになります。

「Main」や「test_color」、「kotei」、、、などとあるのModule1の中にあるプロシージャ名です。

プロシージャ名がマクロ名になります。

モジュール内では同名のプロシージャは作れません。


同名のプロシージャをモジュールに作って保存してもそのときにはエラーはでません。

それを実行するときに初めてこのようなエラーがでてきます。

ライブラリーやモジュール名、プロシージャ名に全角文字は使えません。

LibreOffice Basic IDEからはモジュールやライブラリーの新規作成や削除、改名ができない



LibreOffice Basic IDEから新規のモジュールを作ろうと思いましたが、メニューのファイル→新規作成、の項目ではマクロに関するファイルの新規作成項目がありません。

オブジェクトカタログからでもダメです。

新規作成だけでなく、改名や削除もできません。

Pythonマクロと違い、隠し属性になっているライブラリーやモジュールをエクスプローラから直接削除してもマクロセレクターからは表示が消えません。

とくにライブラリーのフォルダを削除してしまうとLibreOfficeの起動時に毎回エラーがでてきてしまいます。

モジュールやライブラリーの新規作成と削除はマクロ管理画面から可能


ツール→マクロ→マクロの管理→LibreOffice Basic、「管理」をクリック。


この画面からモジュールの新規作成と削除ができます。

「ライブラリ」タブを選択するとライブラリーの新規作成と削除ができます。

しかし、名前の変更ができません。

隠し属性を解除してライブラリーフォルダ名やxbaファイル名を変更してみましたが、名前の変更は反映されませんでした。

どうもこれらの名前の変更はできないようです。

名前を変更したいときは新しい名前で新規作成するしかありません。

ちなみに、マクロ名の変更はプロシージャ名を変更すれば可能です。

モジュールとライブラリーの名前を変更する方法


ライブラリとモジュールを準備しています - LibreOffice Helpをみつけてようやくモジュールやライブラリーの名前を変更する方法がわかりました。

ツール→マクロ→マクロの管理→LibreOffice Basic、「管理」をクリック。

ここで変更したいモジュール名をゆっくりダブルクリックするとカーソルが出現するので名前の変更ができました。

ダブルクリックでもなくシングルクリックでもなく、「ゆっくり」です。

私のパソコンでは1秒間隔のクリックで100%再現できました

1秒間隔で2回クリックして、1秒ぐらい待つと編集可能になります。

これはヘルプを見ないとわからないですね。

ライブラリもライブラリタブから同じ方法で変更できますが、「Standard」というライブラリだけは、標準ライブラリなので変更できません。

参考にしたサイト


OpenOffice.org BASIC プログラミングガイド - Apache OpenOffice Wiki
LibreOffice Basicにも使えます。

ライブラリとモジュールを準備しています - LibreOffice Help
ライブラリとモジュールの管理に関するヘルプ。

次の関連記事:LibreOffice(35)マクロの記録をPythonに翻訳1:リストとタプル

PR

0 件のコメント:

コメントを投稿