表計算ドキュメントの構造
表計算ドキュメントのドキュメントオブジェクトは、com.sun.star.sheet.SpreadsheetDocument サービスをベースにしています。通常これらのドキュメントには、複数の表 (スプレッドシート) があります。マニュアルで使う用語として、表計算ドキュメント は 1 つのドキュメント全体を意味するものとし、スプレッドシート (略称: シート) は各ドキュメントを構成する個々の表 (テーブル) を意味するものとします。
VBA と Apache OpenOffice Basic では、スプレッドシートとスプレッドシートの内容に対して、異なった用語が使用されています。VBA のドキュメントオブジェクトは Workbook、個々のページは Worksheets と呼ばれますが、Apache OpenOffice Basic の場合は SpreadsheetDocument および Sheet と呼ばれています。 |
スプレッドシート
表計算ドキュメントの各シートにアクセスするには、Sheets リストを使用します。
次の 2 つのサンプルコードでは、それぞれ番号および名前を使って各シートへアクセスする方法を示します。
例 1: 番号によるアクセス (開始値は 0)
Dim Doc As Object
Dim Sheet As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets (0)
例 2: 名前によるアクセス
Dim Doc As Object
Dim Sheet As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.getByName("Sheet 1")
最初のサンプルコードでは、シートへのアクセスを番号指定で行なっています (開始値は 0)。次のサンプルコードでは、getByName メソッドにシート名を指定してアクセスしています。
getByName メソッドで取得される Sheet というオブジェクトは、com.sun.star.sheet.Spreadsheet サービスをサポートしています。このサービスは、シート編集用の各種インターフェースを提供するもので、次の属性を利用できます。
- IsVisible (Boolean)
- スプレッドシートを表示する指定。
- PageStyle (String)
- スプレッドシート用のページテンプレートの名前。
シートの作成、削除、名前の変更
spreadsheet ドキュメントの Sheets リストは、個々のシートの作成、削除、名前の変更にも使用します。次のサンプルコードでは、hasByName メソッドを用いて MySheet という名前のシートが存在するかをチェックします。そうした名前のシートが存在する場合、getByName メソッドを用いて該当オブジェクトへの参照を取得して、Sheet という変数に収めます。該当するシートが存在しない場合は、createInstance メソッドを用いてこれを新規作成して、insertByName メソッドにより表計算ドキュメントに挿入します。
Dim Doc As Object
Dim Sheet As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
If Doc.Sheets.hasByName("MySheet") Then
Sheet = Doc.Sheets.getByName("MySheet")
Else
Sheet = Doc.createInstance("com.sun.star.sheet.Spreadsheet")
Doc.Sheets.insertByName("MySheet", Sheet)
End If
「API について」で説明したように、getByName および insertByName メソッドは com.sun.star.container.XnameContainer インターフェースから提供されています。
Content on this page is licensed under the Public Documentation License (PDL). |