カスタム OpenOffice.org Basic マクロとライブラリ
From OpenOffice.org Wiki
OpenOffice.org Basic は、OpenOffice.org の作業を自動化できるプログラミング言語です。 OpenOffice.org Basic マクロはモジュールに格納され、そのモジュールはライブラリに格納されます。 ライブラリは、OpenOffice.org Basic で作成したダイアログボックスのコンテナとしても機能します。 Basic ライブラリは、ユーザーがアクセスできる任意のディレクトリに格納できます。
| Basic ライブラリのパッケージングや配備には、OpenOffice.org の拡張機能を使用します。『OpenOffice.org Developer's Guide』では、拡張機能を詳しく説明しています。 |
OpenOffice.org Basic ライブラリとモジュールについて
デフォルトの OpenOffice.org Basic ライブラリは、install-dir/share/basic ディレクトリにあります。ライブラリには次のファイルが含まれます。
- script.xlb
- ライブラリ内のモジュール名が格納されている XML ファイル。
- dialog.xlb
- ライブラリ内のダイアログボックス名が格納されている XML ファイル。
- *.xba
- 単一の OpenOffice.org Basic モジュール用の OpenOffice.org Basic ソースコードが格納されている XML ファイル。·ファイル名はモジュール名に対応しています。
- *.xdl
- OpenOffice.org Basic ダイアログボックスのダイアログ要素が格納されている XML ファイル。ファイル名はダイアログ名に対応しています。
- *.pba
- パスワードで保護されている (ソースコードが暗号化されている) OpenOffice.org Basic モジュール。ファイル名はモジュール名に対応しています。
OpenOffice.org Basic 設定ファイルについて
script.xlc と dialog.xlc 設定ファイルには、 OpenOffice.org Basic ライブラリとダイアログボックスの場所が含まれています。これらのファイルは、install-dir/user/basic/ ディレクトリにあり、このディレクトリにはデフォルトの標準 OpenOffice.org Basic ライブラリとユーザー定義ライブラリも格納されています。
XML ベースの script.xlc ファイルには、 OpenOffice.org で利用できるすべての Basic ライブラリのリストが含まれています。以下のタグが使用されます。
- library:name
- OpenOffice.org Basic ライブラリ名を指定します。
- xlink:href
- ライブラリの script.xlb ファイルの URL を指定します。このURL は、file:/// 表記で始まる必要があります。
| ライブラリがユーザーインストールの <OpenOffice.org installation directory>/user/basic ディレクトリにある場合、xlink:href タグの値を指定する必要はありません。 |
- xlink:type
- このタグは、xlink:href タグに必要で、simple に設定する必要があります。
- library:link
- デフォルト以外の場所にあるライブラリへのリンクであるかどうかを指定します。OpenOffice.org Basic ライブラリのデフォルトの場所は、install-dir/user/basic です。デフォルトの場所にあるライブラリだけを使用する場合、このタグの値を false に設定します。それ以外のライブラリを使用する場合、このタグの値を true に設定します。
- library:readonly
- ライブラリが読み取り専用であるかどうかを指定します。読み取り専用の場合、このタグの値を true に設定します。
次の XML コードは、script.xlc 設定ファイル ( OpenOffice.org Basic ライブラリの) です。このファイルと dialog.xlc との違いは、 ライブラリを指す xlink:href タグのみで、script.xlb では、 dialog.xlb が dialog.xlb になります。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE library:libraries PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "libraries.dtd"> <library:libraries xmlns:library="http://openoffice.org/2000/library" xmlns:xlink="http://www.w3.org/1999/xlink"> <library:library library:name="Standard" xlink:href="file:///.../user/basic/Standard/script.xlb/" xlink:type="simple" library:link="false"/> <library:library library:name="FormWizard" xlink:href="file:///.../share/basic/FormWizard/script.xlb/" xlink:type="simple" library:link="true" library:readonly="false"/> </library:libraries>
OpenOffice.org Basic 設定ファイルの例
OpenOffice.org Basic ライブラリの配布
既存の OpenOffice.org インストール用または新規インストール専用に利用できるカスタム OpenOffice.org Basic ライブラリを作成できます。
script.xlc と dialog.xlc 設定ファイルは、次のディレクトリにあります。
|
ネットワーク上のすべてのユーザーがカスタム OpenOffice.org Basic ライブラリを利用できるようにする
OpenOffice.org を使用してカスタムライブラリと、そのライブラリのマクロを作成します。
-
スーパーユーザーとして、カスタムライブラリを作成したユーザーインストールから OpenOffice.org サーバーインストールにそのライブラリをコピーします。
cp -r install-dir/user/basic/custom library install-dir/share/basic/ です。 -
ユーザーインストールの script.xlc 設定ファイルを開き、ライブラリの script.xlb 設定ファイルへのリンクを追加します。
リンクには、次の構文を使用します。<library:library library:name="Library Name" xlink:href="$(USER)/basic/Library Name/script.xlb/" xlink:type="simple" library:link="true" library:readonly="false"/> -
ユーザーインストールの dialog.xlc 設定ファイルを開き、ライブラリの script.xlb 設定ファイルへのリンクを追加します。
リンクには、次の構文を使用します。<library:library library:name="Library Name" xlink:href="$(USER)/basic/Library Name/dialog.xlb/" xlink:type="simple" library:link="false"/> - ワークステーション上で OpenOffice.org を再起動します。
カスタム OpenOffice.org Basic ライブラリを、単一のユーザーが利用できるようにする
-
カスタムライブラリを作成したユーザーインストールから、ライブラリを配備するユーザーインストールにカスタムライブラリをコピーします。
- Solaris および Linux プラットフォームでは、スーパーユーザーになり、ライブラリをコピーします。
cp -r ''install-dir''/user/basic/custom library ''install-dir''/user/basic/
- Windows では、管理特権を持つユーザーになり、ライブラリをコピーします。
ライブラリのファイル名パスは、C:\Documents and Settings\user-id\Application Data\install-dir\user\basic\custom library です。
-
ユーザーインストールの script.xlc 設定ファイルを開き、ライブラリの script.xlb 設定ファイルへのリンクを追加します。
リンクには、次の構文を使用します。<library:library library:name="Library Name" xlink:href="$(USER)/basic/Library Name/script.xlb/" xlink:type="simple" library:link="true" library:readonly="false"/> -
ユーザーインストールの dialog.xlc 設定ファイルを開き、ライブラリの script.xlb 設定ファイルへのリンクを追加します。
リンクには、次の構文を使用します。<library:library library:name="Library Name" xlink:href="$(USER)/basic/Library Name/dialog.xlb/" xlink:type="simple" library:link="false"/> - OpenOffice.org を再起動します。
マクロを使用してカスタム OpenOffice.org Basic ライブラリをインストールする
OpenOffice.org Basic ライブラリを OpenOffice.org ドキュメントからインストールするマクロを作成できます。
- Writer で、新しいドキュメントにカスタム OpenOffice.org Basic ライブラリを作成します。
- ドキュメントを保存します。
- インストールするマクロを作成します。
- 「ツール」→「マクロ」→「マクロの管理」→「OpenOffice.orgBasic」を選択します。「OpenOffice.org Basic マクロ」ダイアログボックスが表示されます。
- 「マクロの記録先」リストで、Writer ドキュメントを選択します。
- 「マクロ名」ボックスで、インストールするマクロの名前を入力します。
- 「新規作成」ボタンをクリックします。「Basic」IDE ウィンドウが表示されます。
- 次のコードを入力します。
- SrcLibraryName と DestLibraryName 変数を、作成したライブラリ名に置き換えます。
- 「Basic」 IDE ウィンドウを閉じます。
- ドキュメントにボタンを追加します。
- 「フォームコントロール'''''''」ツールバーで、「'ボタン」アイコンをクリックします。
- ドキュメントで、ドラッグしてボタンを追加します。
- ボタンイベントにインストールするマクロを割り当てます。
- 追加したボタンを右クリックし、「コントロール」を選択します。
- 「イベント」タブをクリックします。
- ボタンイベント (「マウスボタンを押した時」イベントなど) の隣にある省略符号ボタン「...」をクリックします。
- 「割り当てられたアクション」ダイアログボックスで、「マクロ」ボタンをクリックします。「マクロの選択」ダイアログボックスが表示されます。
- 「ライブラリ」リストで、インストールするマクロが格納されているライブラリを選択します。
- 「マクロ名」リストで、インストールするマクロを選択します。
- 「OK」をクリックします。
- 「割り当てられたマクロ」ダイアログボックスで、「OK」をクリックします。
- ドキュメントを保存します。
Sub AddBasicLibrary Dim SourceLibraryName As String, DestLibraryName As String Dim oSrcLib As Object, oDestLib As Object, iCounter As Integer Dim oLib As Object, oGlobalLib As Object ' set these 2 variables to your lib name SrcLibraryName = "TextLib" ' The name of the library that contains the modules DestLibraryName = "NewLib" ' This library will be created and is the ' destination for the modules from the source document. oLib = BasicLibraries ' For Basic libaries oGlobalLib = GlobalScope.BasicLibraries For iLib = 1 To 2 If oGlobalLib.hasByName( DestLibraryName ) = False Then oGlobalLib.createLibrary( DestLibraryName ) End If If oLib.hasByName( SrcLibraryName ) Then oLib.loadLibrary( SrcLibraryName ) oSrcLib = oLib.getByName( SrcLibraryName ) sSrcModules = oSrcLib.getElementNames() iCounter = lBound( sSrcModules() ) while( iCounter <= uBound( sSrcModules() ) ) oDestLib = oGlobalLib.getByName(DestLibraryName) If oDestLib.hasByName( sSrcModules(iCounter) ) = False Then oDestLib.insertByName( sSrcModules(iCounter),_ oSrcLib.getByName( sSrcModules(iCounter) ) ) End If iCounter = iCounter + 1 wend End If oLib = DialogLibraries ' The same for the Dialog libraries oGlobalLib = GlobalScope.DialogLibraries Next iLib End Sub
| Content on this page is licensed under the Public Documentation License (PDL). |

