OpenOffice/LibreOffice Basicマクロの使い方をサンプルを交えてご紹介します。
OpenOffice.org Basic は、OpenOffice.orgを制御するためのスクリプト言語です。VBAでMicrosoft Officeを制御できるように、OpenOffice.org Basic で OpenOffice.org を制御することができます。OpenOffice.org Basic の文法はVisual Basicとほぼ同じなので、文法についてはVisual Basicの項を参照してください。
OpenOffice.org Basicを編集するには、[ツール] メニューから [マクロ] - [マクロの管理] - [OpenOffice.org Basic] を選択してクリックします。
OpenOffice.org Basicは、基本的に文法がVBA (Visual Basic for Applications)と同じである。しかし、いくつか相違点もある。以下に OpenOffice.org BasicとVBAの違いを説明する。
Visual Basicのエディタでは入力されたステートメントがキャピタライズされて、1文字目が大文字、2文字目以降が小文字に整形されます。たとえば、
dim i as integer
と入力すると、
Dim i As Integer
と整形されます。
OpenOffice.org Basicのエディタではこのような整形は行われません。OpenOffice.org Basicではステートメントの大文字と小文字は区別されないので、大文字で入力しても小文字で入力しても構いません。たとえば、次の文はすべて同じ意味に解釈されます。
Dim i As Integer
dim i as integer
DIM i AS INTEGER
プロシージャへ引数として変数を渡すときの参照渡し・値渡しの指定方法がOpenOffice.org BasicとVisual Basicとで異なります。
呼び出し側からプロシージャへ変数を引数として渡した場合、プロシージャ内で引数の値を変更すると、呼び出し側の変数の値も変わります。これを 参照渡し と呼びます。
呼び出し側からプロシージャへ変数を引数として渡すとき、呼び出し側の変数の値を変更されたくない場合、渡す変数名の前に
ByRef
修飾子を付けます。こうすることで、プロシージャ内で引数の値を変更しても、呼び出し側の変数の値が変わることがなくなります。これを
値渡し と呼びます。
Sub Caller
Dim var1 As Integer
Dim var2 As Integer
var1 = 1
var2 = 1
Proc(var1, ByRef var2)
'var1の値は2になる
'var2の値は1のまま
End Sub
Sub Proc(para1 As Integer, para2 As Integer)
'para1およびpara2の値は1
para1 = 2
para2 = 2
End Sub
Visual Basicでは、実行時エラーが発生した際にErrオブジェクトに実行時エラーに関する情報が格納される。しかし、OpenOffice.org BasicにはErrオブジェクトは存在しない。Errオブジェクトの代わりに、次の変数を参照することができる。
変数名 | 意味 |
---|---|
Err | エラー番号 |
Error$ | エラーの内容 |
Erl | エラーが発生した行番号 |
実行時エラーが発生した際に、その内容をメッセージボックスで表示するOpenOffice.org Basicコードの例を示す。
Sub ErrorSample
Dim i As Integer
On Error Goto ErrorHandler
i = 0
i = 12 / i
Exit Sub
ErrorHandler:
MsgBox Error$
End Sub
GUI部品を表すコントロール・オブジェクトや、アプリケーションのドキュメントにアクセスするためのオブジェクトやメソッド、プロパティがOpenOffice.org BasicとVBAでまったく異なります。