カスタム Apache OpenOffice Basic マクロとライブラリ
Apache OpenOffice Basic は、Apache OpenOffice の作業を自動化できるプログラミング言語です。
Apache OpenOffice Basic マクロはモジュールに格納され、そのモジュールはライブラリに格納されます。
ライブラリは、Apache OpenOffice Basic で作成したダイアログボックスのコンテナとしても機能します。
Basic ライブラリは、ユーザーがアクセスできる任意のディレクトリに格納できます。
Basic ライブラリのパッケージングや配備には、Apache OpenOffice の拡張機能を使用します。『Apache OpenOffice Developer's Guide』では、拡張機能を詳しく説明しています。 |
Apache OpenOffice Basic ライブラリとモジュールについて
デフォルトの Apache OpenOffice Basic ライブラリは、install-dir/share/basic ディレクトリにあります。ライブラリには次のファイルが含まれます。
- script.xlb
- ライブラリ内のモジュール名が格納されている XML ファイル。
- dialog.xlb
- ライブラリ内のダイアログボックス名が格納されている XML ファイル。
- *.xba
- 単一の Apache OpenOffice Basic モジュール用の Apache OpenOffice Basic ソースコードが格納されている XML ファイル。·ファイル名はモジュール名に対応しています。
- *.xdl
- Apache OpenOffice Basic ダイアログボックスのダイアログ要素が格納されている XML ファイル。ファイル名はダイアログ名に対応しています。
- *.pba
- パスワードで保護されている (ソースコードが暗号化されている) Apache OpenOffice Basic モジュール。ファイル名はモジュール名に対応しています。
Apache OpenOffice Basic 設定ファイルについて
script.xlc と dialog.xlc 設定ファイルには、 Apache OpenOffice Basic ライブラリとダイアログボックスの場所が含まれています。これらのファイルは、install-dir/user/basic/ ディレクトリにあり、このディレクトリにはデフォルトの標準 Apache OpenOffice Basic ライブラリとユーザー定義ライブラリも格納されています。
XML ベースの script.xlc ファイルには、 Apache OpenOffice で利用できるすべての Basic ライブラリのリストが含まれています。以下のタグが使用されます。
- library:name
- Apache OpenOffice Basic ライブラリ名を指定します。
- xlink:href
- ライブラリの script.xlb ファイルの URL を指定します。このURL は、file:/// 表記で始まる必要があります。
ライブラリがユーザーインストールの <Apache OpenOffice installation directory>/user/basic ディレクトリにある場合、xlink:href タグの値を指定する必要はありません。 |
- xlink:type
- このタグは、xlink:href タグに必要で、simple に設定する必要があります。
- library:link
- デフォルト以外の場所にあるライブラリへのリンクであるかどうかを指定します。Apache OpenOffice Basic ライブラリのデフォルトの場所は、install-dir/user/basic です。デフォルトの場所にあるライブラリだけを使用する場合、このタグの値を false に設定します。それ以外のライブラリを使用する場合、このタグの値を true に設定します。
- library:readonly
- ライブラリが読み取り専用であるかどうかを指定します。読み取り専用の場合、このタグの値を true に設定します。
次の XML コードは、script.xlc 設定ファイル ( Apache OpenOffice 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>
Apache OpenOffice Basic 設定ファイルの例
Apache OpenOffice Basic ライブラリの配布
既存の Apache OpenOffice インストール用または新規インストール専用に利用できるカスタム Apache OpenOffice Basic ライブラリを作成できます。
script.xlc と dialog.xlc 設定ファイルは、次のディレクトリにあります。
|
ネットワーク上のすべてのユーザーがカスタム Apache OpenOffice Basic ライブラリを利用できるようにする
Apache OpenOffice を使用してカスタムライブラリと、そのライブラリのマクロを作成します。
-
スーパーユーザーとして、カスタムライブラリを作成したユーザーインストールから Apache OpenOffice サーバーインストールにそのライブラリをコピーします。
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"/>
- ワークステーション上で Apache OpenOffice を再起動します。
カスタム Apache OpenOffice 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"/>
- Apache OpenOffice を再起動します。
マクロを使用してカスタム Apache OpenOffice Basic ライブラリをインストールする
Apache OpenOffice Basic ライブラリを Apache OpenOffice ドキュメントからインストールするマクロを作成できます。
- Writer で、新しいドキュメントにカスタム Apache OpenOffice Basic ライブラリを作成します。
- ドキュメントを保存します。
- インストールするマクロを作成します。
- 「ツール」→「マクロ」→「マクロの管理」→「Apache OpenOfficeBasic」を選択します。「Apache OpenOffice 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). |