Top > OOoBasic > Calc > search

検索 Edit

検索してみます。

準備 Edit

検索するための準備をします。

検索するためには, SearchDescriptor が必要です。これは, Calc ではシートオブジェクトから取得します。

Sub search_1
Dim oDoc As Object, oSheet As Object
Dim oSearchDesc As Object

  oDoc = ThisComponent
  oSheet = oDoc.Sheets(0)
  oSearchDesc = oSheet.createSearchDescriptor()
End Sub

検索文字列 Edit

検索する文字列は SearchString プロパティーに設定します。

 oSearchDesc.SearchString = "found"

検索に正規表現を使用したいときは正規表現をこの文字列に指定します。また,正規表現を使用するように, SearchRegularExpression プロパティーを true に設定します。

oSearchDesc.SearchRegularExpression = true

正規表現についてはここでは説明しないことにします。

検索オプション Edit

単語単位 Edit

単語単位での検索を行いたいときは SearchWords プロパティーを true に設定します。

oSearchDesc.SearchWords = true

大文字と小文字の区別 Edit

大文字と小文字を区別して検索したいときは SearchCaseSensitive プロパティーを true に設定します。

 oSearchDesc.SearchCaseSensitive = true

最初の一つだけの検索 Edit

最初に見つかる一つ目だけを検索するには findFirst メソッドを使用します。順に検索を行う際には一番最初にこのメソッドで検索を行う必要があります。

.uno.XInterface findFirst ( [in] .util.XSearchDescriptor xDesc )

次の検索 Edit

最初以降の検索を行うには findNext メソッドを使用して検索します。順に検索するときには findFirst 以降の検索にこのメソッドを使用します。

.uno.XInterface findNext ( .uno.XInterface xStartAt, .util.XSearchDescriptor xDesc )
Sub search_2
Dim oDoc As Object, oSheet As Object
Dim oSearchDesc As Object, oFound As Object

  oDoc = ThisComponent
  oSheet = oDoc.Sheets(0)
  oSearchDesc = oSheet.createSearchDescriptor()
  oSearchDesc.SearchString = "found"
  oFound = oSheet.findFirst(oSearchDesc)
  Do While NOT IsNull(oFound)
    oFound = oSheet.findNext(oFound, oSearchDesc)
  Loop
End Sub

ここで戻される oFound はセルオブジェクトです。

全検索 Edit

すべて検索するときです。これには, findAll メソッドを使用します。

.container.XIndexAccess findAll ( [in] .util.XSearchDescriptor xDesc )
Sub search_3
Dim oDoc As Object, oSheet As Object
Dim oSearchDesc As Object
Dim oFounds As Object

  oDoc = ThisComponent
  oSheet = oDoc.Sheets(2)
  oSearchDesc = oSheet.createSearchDescriptor()
  oSearchDesc.SearchString = "text"
  oFounds = oSheet.findAll(oSearchDesc)
  If NOT(IsNull(oFounds)) Then
    MsgBox oFounds.getCount()
  Else
    MsgBox "Not found !"
  End If
End Sub

findAll メソッドで戻される oFounds は CellRanges オブジェクトです。このオブジェクトは複数のセル範囲の集まりです (セル範囲が一つのときもあります)。この検索結果を使用してセルのプロパティーを変更するには,一度に行うまたは別々に行う,の二つがあります。目的に応じて使い分けます。

範囲内の検索 Edit

OOoBasic/Calc/sheetcellranges 参照。


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