Top > OOoBasic > Calc > annotation

コメント Edit

セルにコメントを挿入してみます。

コメント Edit

セルのコメントは getAnnotation メソッドでオブジェクトを取得する必要があります。もしくは,Annotation プロパティーを使用します。

Sub annotation_1
Dim oDoc As Object, oSheet As Object
Dim oCell As Object
Dim oAnnotation As Object

  oDoc = ThisComponent
  oSheet = oDoc.Sheets(0)
  oCell = oSheet.getCellByPosition( 1, 1 ) 'B2
  oAnnotation = oCell.getAnnotation()
End Sub

表示されるプロパティーやメソッドからセルのテキストのように扱えばいいことが分かります。

文字列 Edit

コメントにただ文字列を入力するだけなら簡単です。String プロパティーを使用するか,setString メソッドを使用します。

Sub annotation_2
Dim oDoc As Object, oSheet As Object
Dim oCell As Object
Dim oAnnotation As Object

  oDoc = ThisComponent
  oSheet = oDoc.Sheets(0)
  oCell = oSheet.getCellByPosition( 1, 1 ) 'B2
  'oAnnotation = oCell.getAnnotation()
  'oAnnotation.setString( "annotation !" ) '--
  'MsgBox oAnnotation.getString() '--
  oSheet.getAnnotations().insertNew(oCell.getCellAddress(), "annotation!")
End Sub

取得も簡単です。最後の行では,getString メソッドを使用してコメントの文字列を取得しています。

表示 Edit

セルのコメントはセルの右上の赤い点として表示するか,コメントボックスを表示するかを指定できます。設定には setIsVisible メソッドを,どちらの設定になっているかどうかを調べるのは getIsVisible メソッドです。

Sub annotation_3
Dim oDoc As Object, oSheet As Object
Dim oCell As Object
Dim oAnnotation As Object

  oDoc = ThisComponent
  oSheet = oDoc.Sheets(0)
  oCell = oSheet.getCellByPosition( 1, 1 ) 'B2
  oAnnotation = oCell.getAnnotation()
  oAnnotation.setString( "annotation !" ) '--
  oAnnotation.setIsVisible( True )
  MsgBox oAnnotation.getIsVisible()
End Sub

setIsVisible メソッドで IsVisible プロパティーを True にするとコメントボックスが表示されます。

日付 Edit

セルのコメントには日付が保存されています。この日付は,コメントを挿入した日付または,最後に編集した日付です。

Sub annotation_4
Dim oDoc As Object, oSheet As Object
Dim oCell As Object
Dim oAnnotation As Object

  oDoc = ThisComponent
  oSheet = oDoc.Sheets(0)
  oCell = oSheet.getCellByPosition( 1, 1 ) 'B2
  oAnnotation = oCell.getAnnotation()
  oAnnotation.setString( "annotation !" )
  MsgBox oAnnotation.Date() '--
End Sub

挿入 Edit

コメントの文字列があるところへ文字列を追加挿入します。

CopyOutputDataOutputPosition プロパティーを指定します。

前述の優先フィールドで使用した例の結果を別の位置に貼り付けてみます。

Sub annotation_5
Dim oDoc As Object, oSheet As Object
Dim oCell As Object
Dim sDate As String
Dim oAnnotation As Object

  oDoc = ThisComponent
  oSheet = oDoc.Sheets(0)
  oCell = oSheet.getCellByPosition( 1, 1 ) 'B2
  oAnnotation = oCell.getAnnotation()
  With oAnnotation
    .setString( "annotation !" )
    .setIsVisible( True )
    sDate = .getDate()
    .insertString( oAnnotation.getEnd(), sDate, False )
  End With
End Sub

ソートされた結果が "A8:B13" に出力されました。出力するセル範囲の左上のセルのアドレスを oCellAddress で OutputPosition に指定しています。やはり,元のセル範囲には影響ありません。

com.sun.star.table.CellAddress struct には 3 つのエレメントがあり,Sheet, Column, Row です。

親オブジェクト Edit

セルのコメントから親オブジェクトであるセルオブジェクトを取得することができます。これが必要なのは,コメントコンテナからアクセスするときです。コンテナにはシートにあるすべてのセルのコメントへアクセスすることができます。 シートオブジェクトからコメントコンテナを取得します。getAnnotations メソッドを使用します。

Sub annotation_6
Dim oDoc As Object, oSheet As Object
Dim oAnnotations As Object

  oDoc = ThisComponent
  oSheet = oDoc.Sheets(0)
  oAnnotations = oSheet.getAnnotations()
End Sub

この oAnnotations オブジェクトからそのシートにあるすべてのコメントオブジェクトにアクセスすることができます。アクセスするには,インデックスまたは enumeration を使用します。

インデックスでアクセスするには getByIndex メソッドなどを使用します。insertNew, removeByIndex, getCount, hasElements メソッドを使用することができます。

Methods
boolean hasElements ( void )要素としてのコメントがあるかどうか
long getCount ( void )存在するコメントの数
void getByIndex (
SbxLONG )
個別のコメントオブジェクトをインデックスで取得する
void insertNew (
SbxOBJECT,SbxSTRING )
コメントをセルに挿入する
void removeByIndex (
SbxLONG )
インデックスのコメントを削除する

enumeration を使用するならそのシートにあるすべてのコメントにアクセスすることができます。

Methods
.container.XEnumeration createEnumeration ( void )このシートにあるすべてのコメントへアクセスする enumeration を作成する

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