Top > OOoBasic > Calc > cellstyle

セルのスタイル Edit

セルにはスタイルを設定でき見た目などを統一したドキュメントがつくれます。ここでは,スタイルを設定する方法を取り上げます。

セルとスタイル Edit

セルスタイルは,セル,セル範囲,シートオブジェクトの持つプロパティー CellStyle で設定できます。しかし,新しいスタイルの作成などにはスタイルファミリーへのアクセスが必要です。

まずはセルのスタイルを調べてみます。セルのスタイルは CellStyle プロパティーを使用します。

Sub cellstyle_1
Dim oDoc As Object
Dim oStyleFamilies As Object
  oDoc = Thiscomponent
  oStyleFamilies = oDoc.getStyleFamilies()
  MsgBox oDoc.Sheets(0).getCellRangeByName( "A1" ).CellStyle
End Sub

スタイルファミリー Edit

スタイルはドキュメントのスタイルファミリーに含まれるのでドキュメントのオブジェクトからインスタンスを取得します。

Sub stylefamilies_1() ' in Calc document
Dim oDoc As Object, oStyleFamilies As Object
  oDoc = ThisComponent
  oStyleFamilies = oDoc.StyleFamilies
  'or
  'oStyleFamilies = oDoc.getStyleFamilies()
End Sub

スタイルは,さらにこのスタイルファミリーの中でスタイルごとに分かれています。getByNamegetByIndex でスタイルべつのコンテナにアクセスする必要があります。

個別のスタイル Edit

使用できるスタイルはドキュメントによって違います。 Calc では「セルスタイル」と「ページスタイル」が使用できます。しかし,スタイルファミリーから使用できるスタイル名を取得する方法があります。 getElementNames() メソッドで使用可能なスタイル名を取得できます。スタイルへのアクセスはインデックスによるよりも名前によるアクセスのほうが簡単です。

Sub stylefamilies_stylename()
Dim oDoc As Object, oStyleFamilies As Object
Dim sStyleNames() As String
  oDoc = ThisComponent
  oStyleFamilies = oDoc.getStyleFamilies()
  sStyleNames() = oStyleFamilies.getElementNames()
  'sStyleNames() = oStyleFamilies.ElementNames
  For i% = 0 To UBound( sStyleNames() )
    MsgBox sStyleNames(i)
  Next i
  MsgBox oStyleFamilies.getCout()
End Sub

Calc では "CellStyles", "PageStyles" の二つが使用できます。最後に表示された数字はスタイルの数です。

セルスタイル Edit

CellStyles にはデフォルトでいくつかのスタイルが含まれます。この CellStyles に含まれるスタイル名を取得してみます。

 Sub CellStyles_test()
 Dim oDoc As Object, oStyleFamilies As Object
 Dim oCellStyles As Object
 Dim sCellStyleNames() As String
   oDoc = ThisComponent
   oStyleFamilies = oDoc.getStyleFamilies()
   oCellStyles = oStyleFamilies.getByName( "CellStyles" )
   MsgBox "Number of styles: " + oCellStyles.getCount()
   sCellStyleNames() = oCellStyles.getElementNames()
   For i = 0 To UBound( sCellStyleNames() )
     MsgBox sCellStyleNames(i)
   Next i
 End Sub

getCount() で表示された数だけ、名前のついたスタイルがあります。この名前やインデックスでそれぞれのスタイルへアクセスできます。 名前またはインデックスでそれぞれのスタイルオブジェクトにアクセスします。名前が分かっているときは名前の方が便利です。

 Sub CellStyle_1()
 Dim oDoc As Object, oCellStyles As Object
 Dim oDefaultStyle As Object
   oDoc = ThisComponent
   oCellStyles = oDoc.StyleFamilies.getByName( "CellStyles" )
   If oCellStyles.hasByName( "Default" ) Then
     oDefaultStyle = oCellStyles.getByName( "Default" )
   End If
   MsgBox oDefaultStyle.Name
 End Sub

予期したスタイル名のスタイルオブジェクトが取得できていることが確認できます。また、このスタイルはセルのものなのでセルオブジェクトの持つプロパティーとほとんど同じプロパティーのセットがあることが分かります。

新しいスタイル Edit

使用したいプロパティーを持ったスタイルを探すのもいいですが、なかなか合うスタイルはありません。そこで新しいスタイルを作成しましょう。 CellStyles に新しいスタイルを挿入してみます。

Sub newstyle_cellstyles()
Dim oDoc As Object, oCellStyles As Object
Dim oNewStyle As Object
Dim sNewStyleName As String
  sNewStyleName = "NewStyle"
  oDoc = ThisComponent
  oCellStyles = oDoc.getStyleFamilies().getByName( "CellStyles" )
  If NOT oCellStyles.hasByName( sNewStyleName ) Then
    oNewStyle = oDoc.createInstance( "com.sun.star.style.CellStyle" )
    oCellStyles.insertByName( sNewStyleName, oNewStyle )
  End If
  oNewStyle.CellBackColor = "&H000000"
  oNewStyle.CharColor = "&HFFFFFF"
End Sub

セルの背景色が黒色で文字色が白色の "NewStyle" が挿入されたはずです。設定しなかったプロパティーは親スタイルまたは標準のものが使用されます。 PageStyles に新しいスタイルを挿入してみます。

Sub newstyle_pagestyles()
Dim oDoc As Object, oPageStyles As Object
Dim oNewStyle As Object
Dim sNewStyleName As String
  sNewStyleName = "NewPageStyle"
  oDoc = ThisComponent
  oPageStyles = oDoc.getStyleFamilies().getByName( "PageStyles" )
  oNewStyle = oDoc.createInstance( "com.sun.star.style.PageStyle" )
  If oPageStyles.hasByName( sNewStyleName ) Then
    oPageStyles.insertByName( sNewStyleName, oNewStyle )
  End If
  oNewStyle.IsLandscape = True
End Sub

紙方向が縦のスタイル "NewStyle" が追加されました。スタイルは追加した後でプロパティーを設定します。

スタイルの削除 Edit

いま付け加えた "NewStyle" を削除してみます。削除には removeByName メソッドなどを使用します。

Sub CellStyle_remove()
Dim oDoc As Object, oCellStyles As Object
  oDoc = ThisComponent
  oCellStyles = oDoc.getStyleFamilies().getByName( "CellStyles" )
  If oCellStyles.hasByName( "NewStyle" ) Then
    oCellStyles.removeByName( "NewStyle" )
  End If
End Sub

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