名前を付けた範囲 
名前が付けられた範囲。
名前が付けられた範囲コンテナ 
ドキュメントモデルオブジェクトの NamedRanges プロパティから取得します。
oDoc = ThisComponent
oNamedRanges = oDoc.NamedRanges
名前を付けられた範囲はドキュメント単位で管理されておりシート単位ではありません。
範囲を追加 
新しい名前を付けた範囲を追加するにはコンテナオブジェクトの addNewByName メソッドを利用します。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| | Sub namedrange_3
oDoc = ThisComponent
oNamedRanges = oDoc.NamedRanges
aPosition = CreateUnoStruct( _
"com.sun.star.table.CellAddress")
With aPosition
.Sheet = 0
.Column = 0
.Row = 0
End With
sName = "RangeA"
sCont = "$表1.$A$1:$C$3"
oNamedRanges.addNewByName( _
sName, sCont, aPosition, 0 )
End Sub
|
- void addNewByName ( [in] string aName, [in] string aContent, [in] .table.CellAddress aPosition, [in] long nType )
- aName: 範囲名
- aContent: 範囲の内容指定
- aPosition: 相対参照の基本位置
- nType: 範囲の種類 com.sun.star.sheet.NamedRangeFlag 定数
タイトルから範囲を追加 
セルの文字列を範囲名として名前を付けた範囲を自動的に作成します。範囲名にはタイトル行または列の文字列 (_文字列) が利用され、範囲にはタイトルセルは含まれません。
次のようなセル範囲のとき。
以下のようにすると、範囲名 "_RangeC" および "_RangeD" が範囲 "A8:A9" および "B8:B9" として作成されます。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| | Sub namedrange_4
oDoc = ThisComponent
oNamedRanges = oDoc.NamedRanges
aSource = CreateUnoStruct( _
"com.sun.star.table.CellRangeAddress")
With aSource
.Sheet = 0
.StartColumn = 0
.EndColumn = 1
.StartRow = 6
.EndRow = 8
End With
oNamedRanges.addNewFromTitles(aSource, _
com.sun.star.sheet.Border.TOP)
End Sub
|
範囲を削除 
名前を付けた範囲を削除するにはコンテナオブジェクトの removeByName メソッドを利用します。
0
1
2
3
4
5
6
| | Sub namedrange_5
oDoc = ThisComponent
oNamedRanges = oDoc.NamedRanges
sName = "RangeA"
oNamedRanges.removeByName(sName)
End Sub
|
範囲の確認 
コンテナに範囲が含まれるかどうかを hasElements メソッドで、コンテナに特定の名前の範囲が含まれるかどうかを hasByName メソッドで調べられます。
名前のリスト 
コンテナに含まれる名前が付けられた範囲の名前と内容をシートセル上に書き出します。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
| | Sub namedrange_6
oDoc = ThisComponent
oNamedRanges = oDoc.NamedRanges
aPosition = CreateUnoStruct( _
"com.sun.star.table.CellAddress")
With aPosition
.Sheet = 0
.Column = 0
.Row = 0
End With
oNamedRanges.outputList(aPosition)
End Sub
|