*検索 [#c113aacd] 検索してみます。 #contents **準備 [#kb1f0539] 検索するための準備をします。 検索するためには, SearchDescriptor が必要です。これは, Calc ではシート オブジェクトから取得します。 #code(ob){{ Sub search_1 Dim oDoc As Object, oSheet As Object Dim oSearchDesc As Object 検索するためには, 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 }} End Sub **検索文字列 [#e63e5de1] 検索する文字列は ''SearchString'' プロパティーに設定します。 oSearchDesc.SearchString = "found" 検索に正規表現を使用したいときは正規表現をこの文字列に指定します。また,正規表現を使用するように, ''SearchRegularExpression'' プロパティーを true に設定します。 oSearchDesc.SearchRegularExpression = true 正規表現についてはここでは説明しないことにします。 **検索オプション [#s957cd0d] ***単語単位 [#d979e607] 単語単位での検索を行いたいときは ''SearchWords'' プロパティーを true に設定します。 oSearchDesc.SearchWords = true ***大文字と小文字の区別 [#hdd0ddd8] 大文字と小文字を区別して検索したいときは ''SearchCaseSensitive'' プロパティーを true に設定します。 oSearchDesc.SearchCaseSensitive = true **最初の一つだけの検索 [#i541d62e] 最初に見つかる一つ目だけを検索するには ''findFirst'' メソッドを使用します。順に検索を行う際には一番最初にこのメソッドで検索を行う必要があります。 .uno.XInterface findFirst ( [in] .util.XSearchDescriptor xDesc ) **次の検索 [#l7691dec] 最初以降の検索を行うには ''findNext'' メソッドを使用して検索します。順に検索するときには ''findFirst'' 以降の検索にこのメソッドを使用します。 .uno.XInterface findNext ( .uno.XInterface xStartAt, .util.XSearchDescriptor xDesc ) #code(ob){{ Sub search_2 Dim oDoc As Object, oSheet As Object Dim oSearchDesc As Object, oFound As Object 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 はセル オブジェクトです。 End Sub ここで戻される oFound はセルオブジェクトです。 **全検索 [#mfb7ba2a] すべて検索するときです。これには, ''findAll'' メソッドを使用します。 .container.XIndexAccess findAll ( [in] .util.XSearchDescriptor xDesc ) #code(ob){{ Sub search_3 Dim oDoc As Object, oSheet As Object Dim oSearchDesc As Object Dim oFounds As Object 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 }} End Sub ''findAll'' メソッドで戻される oFounds は CellRanges オブジェクトです。このオブジェクトは複数のセル範囲の集まりです (セル範囲が一つのときもあります)。この検索結果を使用してセルのプロパティーを変更するには,一度に行うまたは別々に行う,の二つがあります。目的に応じて使い分けます。 **範囲内の検索 [#k35a45ba] [[OOoBasic/Calc/sheetcellranges]] 参照。 |