チャートオブジェクト 
チャートオブジェクト 
チャートコンテナからチャートを取得すると com.sun.star.table.TableChart サービスを実装したコンポーネントのインスタンスですがこれはチャートを埋め込み型オブジェクトとして保持するラッパです。チャートモデルにアクセスするには com.sun.star.document.XEmbeddedObjectSupplier インターフェースを利用して次のようにします。
oCharts = oSheet.getCharts()
sNames = oCharts.getElementNames()
oObj = oCharts.getByName(sNames)
oChart = oObj.getEmbeddedObject()
ドキュメントで選択されたオブジェクトからチャートモデルを取得するには次のようになります。
oDoc = ThisComponent
oSelection = oDoc.getCurrentSelection()
If NOT oSelection.supportsService("com.sun.star.drawing.ShapeCollection") Then exit sub
oChartShape = oSelection.getByIndex(0)
If NOT oChartShape.supportsService("com.sun.star.drawing.OLE2Shape") Then exit sub
If NOT (oChartShape.CLSID = "12DCAE26-281F-416F-a234-c3086127382e") Then exit sub
oChart = oChartShape.Model
チャートは図形描写オブジェクトの OLEShape に埋め込まれています。Chart の CLSID でチャートかどうかを判断できます。
チャートの更新 
チャートのプロパティーを変更しても表示されているチャートが実際に変更されない場合があります。その場合,Calc ドキュメントのセルの内容の再計算を行うと更新されます。
oDoc = ThisComponent
oDoc.calculate()
チャートのデータ範囲 
チャートのデータ範囲を文字列として取得するプロパティがあります。チャートドキュメントオブジェクトの ChartRangeAddress プロパティーです。
チャートの見た目 
全てのチャートに関するタイトルなど見た目に関する内容を取り上げます。
チャートタイトル 
チャートのタイトルはチャートドキュメントオブジェクトの Title プロパティーで設定します。
チャートサブタイトル 
チャートのサブタイトルはチャートドキュメントオブジェクトの SubTitle プロパティーで設定します。
チャートエリア 
チャートエリアの設定はチャートドキュメントオブジェクトの Area プロパティーで行います。
データラベルの有無 
チャートを作成するときにはデータ範囲の最初の行または列をデータラベルとして利用するかどうかを指定できます。これらの設定はチャートドキュメントオブジェクトのプロパティーを使用して設定します。最初の列をデータラベルとして利用するときは DataSourceLabelsInFirstColumn プロパティーを true にします。また,最初の行をデータラベルとして使用するかどうかは DataSourceLabelsInFirstRow プロパティーで設定します。
チャートの位置 
シート上でのチャートの位置はシート上での OLE2Shape の位置になります。設定方法はシート上での図形描写オブジェクトの配置と同じです。
次のようにすると特定のチャートオブジェクトを保持しているシェープを見つけることができます。
sub FindChartShape1
oDoc = ThisComponent
oSheet = oDoc.getSheets().getByIndex(0)
oDrawPage = oSheet.getDrawPage()
oCharts = oSheet.getCharts()
oObj = oCharts.getByName("Object 3")
oChart = oObj.getEmbeddedObject()
oShape = FindChartShape(oDrawPage, oChart)
If NOT IsNull(oShape) Then
msgbox "found."
End If
end sub
Function FindChartShape(oDrawPage As Object, oChart As Object) As Object
Dim oShape As Object
For i = 0 To oDrawPage.getCount() - 1 step 1
oShape = oDrawPage.getByIndex(i)
If oShape.supportsService("com.sun.star.drawing.OLE2Shape") Then
If oShape.CLSID = "12DCAE26-281F-416F-a234-c3086127382e" Then
If EqualUnoObjects(oShape.Model, oChart) Then
oShape = oShape
End If
End If
End If
Next
FindChartShape = oShape
End Function
プロパティ 
プロパティ | 型 | 説明 |
AdditionalShapes | com.sun.star.drawing.XShapes | 追加図形描写オブジェクト |
DataSourceLabelsInFirstColumn | boolean | |
DataSourceLabelsInFirstRow | boolean | |
Modified | boolean | 編集状態 |
NullDate | com.sun.star.util.DateTime | |
RefreshAddInAllowed | boolean | |
HasLegend | boolean | 凡例の有無 |
HasMainTitle | boolean | タイトルの有無 |
HasSubTitle | boolean | サブタイトルの有無 |