Top > OOoBasic > Tutorial > calc > tuto1

セルから値を取得する Edit

OpenOffice.org Basic と Calc への入門の第一歩として「セルから値を取得する」チュートリアルです。

準備 Edit

まずは,準備として Calc の新しいファイルを一つ作成してください。

ここでは "calc_tuto1.ods" という名前にしました。OpenOffice.org 1.1 系を使用している方は "calc_tuto1.sxc" と読み替えてください。

そして,セル "F2" へ OpenOffice.org Basic という文字列を入力しました。さらに,セル "F3" へは値 2 を入力しました。チュートリアルで試しに取得してみる値として,文字列と値の両方を準備しておきます。

IDE Edit

OOoBasic のIDE の使い方を知らない方はこちらのページを先に読んでください。

OOoBasic/Tutorial/IDE

モジュールの作成 Edit

準備の続きとしてメニューからツール -> マクロ -> Organize Macros -> OpenOffice.org Basic を選択してください。

calc_tuto1-1.png

すると,次のような OOoBasic のモジュールとプロシージャを編集するダイアログが表示されます。

calc_tuto1-2.png

そして,新規ボタンをクリックして新しいモジュールを作成します。

calc_tuto1-3.png

Module1 を作成すると IDE が勝手に開きます。

calc_tuto1-4.png

IDE のウィンドウには次のようなコードが見えます。

Sub Main

End Sub

このプロシージャへコードを追加して「セルの値を取得」します。

次からは順にセルの値を取得するまでの流れに沿ってチュートリアルを進めて行きます。

ドキュメントへのアクセス Edit

このチュートリアルの中でもドキュメントを取り扱うマクロを OOoBasic で作成しようとするときに一番重要な部分です。

OOoBasic からドキュメントへアクセスするには特別なランタイム関数の ThisComponent を使います。この関数はドキュメントオブジェクトを戻すのでそのオブジェクトを変数 oDoc へ入れておきます。

Sub Main
Dim oDoc As Object
  oDoc = ThisComponent
End Sub

これでドキュメントへアクセスする準備ができましたが実際に oDoc 変数がドキュメントオブジェクトを示しているかどうかを確認しておくことにします。ドキュメントオブジェクトのプロパティー Location を使ってドキュメント "calc_tuto1.ods" ファイルの保存されている場所を確認してみます。

Sub Main
Dim oDoc As Object
  oDoc = ThisComponent
  MsgBox oDoc.Location
End Sub

メッセージボックスが表示されてドキュメントを保存した場所が表示されました。OOo ではファイルのパスは URL 形式で表すため表示されたのは URL 形式です。

次はシートへアクセスします。

シートへのアクセス Edit

ドキュメントからさらにシートへアクセスするにはドキュメントオブジェクトを通じて行います。

シートを表すシートオブジェクトはシートコンテナオブジェクトにまとめられて管理されています。そこで,まずシートコンテナオブジェクトへアクセスしてからさらにシートオブジェクトへアクセスすることになります。

まずはシートコンテナオブジェクトです。

Sub Main
Dim oDoc As Object
Dim oSheets As Object
  oDoc = ThisComponent
  oSheets = oDoc.getSheets()
End Sub

シートコンテナオブジェクトを取得するにはドキュメントオブジェクトの getSheets メソッドを使います。このメソッドには引数はありません。このシートオブジェクトにはドキュメントに存在するシート全てが含まれています。

シートコンテナオブジェクトからアクセスしたい特定のシートオブジェクトを取得します。シートコンテナからアクセスしたいシートの名前を指定してシートオブジェクトを取得します。

Sub Main
Dim oDoc As Object
Dim oSheets As Object
Dim oSheet As Object
  oDoc = ThisComponent
  oSheets = oDoc.getSheets()
  oSheet = oSheets.getByName("表1")
End Sub

OpenOffice.org が日本語版の時にはシート名が "表1" などとなっていますが,英語版の時には "Sheet1" となっています。

シート名が違うとシートが取得できなかったりします。そのときにはインデックスで取得する方法があります。シートコンテナオブジェクトの getByIndex メソッドを使用します。

Sub Main
Dim oDoc As Object
Dim oSheets As Object
Dim oSheet As Object
  oDoc = ThisComponent
  oSheets = oDoc.getSheets()
  oSheet = oSheet.getByIndex(0)
End Sub

ここで注意する必要があるのは,シートのインデックスが "0" から始まることです。シートのインデックスを知るのは簡単です,ドキュメントのウィンドウに表示されているシートタブの左から順に 0, 1, 2 ... となっています。

次はセルへのアクセスです。

セルへのアクセス Edit

ついにセルにアクセスするところまでやってきました。

セルへのアクセスはやはりシートオブジェクトから行います。シートオブジェクトの getCellByPosition メソッドを使います。

Sub Main
Dim oDoc As Object
Dim oSheets As Object
Dim oSheet As Object
Dim oCell As Object
  oDoc = ThisComponent
  oSheets = oDoc.getSheets()
  oSheet = oSheets.getByName("表1")
  oCell = oSheet.getCellByPosition(5,1)
  MsgBox oCell.String
End Sub

getCellByPosition メソッドの引数に注意してください。ここで取得しているセルは "F2" です。getCellByPosition メソッドの引数は取得したいセルの列,行の順にインデックスを指定します。

さて,取得したセルオブジェクトのプロパティー String を使用してセルの文字列を取得しました。セル "F2" に表示されている文字列 "OpenOffice.org Basic" が表示されたでしょうか?

セル "F3" に表示されている値も取得してみてください。

終わりに Edit

これでチュートリアル 1 は終わりです。このチュートリアルをこなすだけで OpenOffice.org Calc を使う OpenOffice.org Basic がなんとなく分かったと思えるはずです。やはりこのページで重要なことは OpenOffice.org Basic からドキュメントへアクセスするには ThisComponent を使うということです。


Attach file: filecalc_tuto1-4.png 410 download [Information] filecalc_tuto1-2.png 403 download [Information] filecalc_tuto1-1.png 400 download [Information] filecalc_tuto1-3.png 378 download [Information]

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes