2017-09-20 1 views
1

私はOpenOffice Basicで円グラフを生成するためのマクロを作成していますが、パイのさまざまな部分の色を変更する方法が見つかりません。OOo基本:PieChart、グラフの色を変更する方法

私たちは、一例として、このテーマのマクロとることができます。 OpenOffice Calc macro to add pie chart

で、私のデータは以下のとおりです。
enter image description here

そして、私のコード:

私は取得できますか
Sub Macro1 

Dim oRange as Object 
Dim oRangeAddress(1) As New com.sun.star.table.CellRangeAddress 
Dim oRect As New com.sun.star.awt.Rectangle 
Dim cTitle as String 

oRange = thisComponent.getCurrentSelection.getRangeAddress 
oSheets = ThisComponent.getSheets() 
oSheet = oSheets.getByIndex(0) 
oCharts = oSheet.Charts 

oRect.Width = 10000 
oRect.Height = 10000 
oRect.X = 8000 
oRect.Y = 1000 

oRangeAddress(0).Sheet = oRange.Sheet 
oRangeAddress(0).StartColumn = 0 
oRangeAddress(0).StartRow = 0 
oRangeAddress(0).EndColumn = 1 
oRangeAddress(0).EndRow = 2 

cTitle = "Test Results" 
oCharts.addNewByName(cTitle,oRect,oRangeAddress(),TRUE, TRUE) 
oChart = oCharts.getByName(cTitle).embeddedObject 
oChart.Diagram = oChart.createInstance("com.sun.star.chart.PieDiagram") 
oChart.HasMainTitle = True 
oChart.Title.String = cTitle 

End Sub 

私のチャートの中には、青の代わりに緑色のものがいくつかあります。

ありがとうございました。

+0

コードを表示してください。そして、あなたは "openofficeの基本的な円グラフの異なる色"で検索したいかもしれません。それが助けにならないなら、なぜその技術のどれも働かなかったのを知る必要があります。 – jdv

+0

コードで更新しました。私はGoogleでいくつかの長い検索をしましたが、何も見つかりませんでした。私は方法の名前がわからないので試してみる技術はありません。 – Xavier

+0

うわー、OpenOfficeのドキュメントはひどいです。まず、さまざまなオブジェクトのFillColorプロパティを調べます。 – jdv

答えて

0

ここに1つの解決策があります。

Sub Macro1 
    ... 
    oFirstDiagram = oChart.getFirstDiagram() 
    oColorScheme = CreateUnoListener("XColorScheme_", "com.sun.star.chart2.XColorScheme") 
    oFirstDiagram.setDefaultColorScheme(oColorScheme) 
End Sub 

Function XColorScheme_getColorByIndex(index As Integer) As Long 
    Dim result As Long 
    result = &H0000FF ' blue 
    If index = 0 Then 
     result = &H00FF00 ' green 
    ElseIf index = 1 Then 
     result = &HFFFF00 ' yellow 
    End If 
    XColorScheme_getColorByIndex = result 
End Function 

私はこのアプローチのために見つけることができる唯一の関連ドキュメントはAPIドキュメントです:https://www.openoffice.org/api/docs/common/ref/com/sun/star/chart2/XDiagram.html。もう一つの方法は、列に色を置くことです

C.

Status  Count Color 
Unfinished 20  =COLOR(0,255,0) 
Finished 30  =COLOR(255,0,0) 

は、その後、あなたがこの第二のアプローチのためのコードを表示したい場合は、列Cを使用するには、色を塗りつぶしため範囲を設定し、コメントを投稿私はそれを調べます。

さらに別の方法は、https://forum.openoffice.org/en/forum/viewtopic.php?t=36001です。

oChart.Diagram.DataRowSource = com.sun.star.chart.ChartDataRowSource.COLUMNS 
oChart.FirstDiagram.CoordinateSystems(0).ChartTypes(0).DataSeries(0).Color = &H00FF00 

しかし、この最後のアプローチでは、私が試したときに色が変わっていませんでした。

+0

ありがとうございました!最初のアプローチは、私が欲しいものを正確に行います! – Xavier

関連する問題