2010-12-14 17 views
0

埋め込みMicrosoft Office 11.0スプレッドシートオブジェクト(Office 2003)に一連のエントリを設定するProcessBookディスプレイを作成しています。私はそれらに関する集計データを計算しています。この集約データは、画面上のスプレッドシート形式では表示しないでくださいが、棒グラフを生成するために使用する必要があります。データは、現在、別のMicrosoft Office 11.0スプレッドシートオブジェクトを設定するために使用されています。各棒グラフのタイトルが列Aにあり、対応する値が列Bにあるように編成されています。VBAを使用して埋め込みバー/列チャートをプログラムで変更する方法はありますか。

これはProcessBookなので、埋め込みオブジェクトにアクセスするのにもいくつかの困難がありましたが、子のChChartオブジェクトだけでなく、ChartSpaceオブジェクトへのアクセスを組み込み、アクセスすることができます。残念ながら、バーの値を手動で設定する方法や、.SetDataまたは.SetSpreadsheetDataのメソッドを使用して、設定したオブジェクトをポイントする方法を理解できません。グラフスペースオブジェクトへのアクセス

は非常に簡単です:ThisDisplay.ChartSpace1
私は、かなり簡単にチャートやアクセス、それを追加することができます。
Dim objChart as ChChart
Set objChart = ThisDisplay.ChartSpace1.Charts.Add(0)

私もかなり簡単に私のスプレッドシートの値にアクセスすることができます
strBarName = ThisDisplay.sstChartData.Range("A2").Value
intBarVal = ThisDisplay.sstChartData.Range("B2").Value

データソースを実際に設定するか、ChChartオブジェクトのバーの値を手動で設定するにはどうすればよいですか?また、別のオブジェクトを使用して同じ目標を達成するにはどうすればよいですか?

答えて

0

ここでは永続性が重要です。私は値を手動で追加する方法と、既存のスプレッドシートオブジェクトを参照する方法を決定することができました。どちらの例も、オンラインのChChartの文書を大きく引用しています。私は最初にそれを試みたときにちょうど疲れていて、どこかでミスタイプをしているに違いないと思います。

Public Sub AddValuesToChartManually() 
Dim objChart As ChChart 
With ThisDisplay.ChartSpace1 
    Do While .Charts.Count > 0 
     ThisDisplay.ChartSpace1.Charts.Delete (0) 
    Loop 

    Set objChart = .Charts.Add 
    objChart.HasTitle = True 
    objChart.Title.Caption = "Chart Title" 
    objChart.Axes.Item(0).HasTitle = True 
    objChart.Axes.Item(1).HasTitle = True 
    objChart.Axes.Item(0).Title.Caption = "Axis 0" 
    objChart.Axes.Item(1).Title.Caption = "Axis 1" 
    objChart.HasLegend = False   

    Dim astrHeaders(0 To 4) As String 
    Dim aintValues1(0 To 4) As String 
    Dim aintValues2(0 To 4) As String 
    Dim astrSeries1(0) As String 
    Dim astrSeries2(0) As String 

    astrHeaders(0) = "AL1" 
    astrHeaders(1) = "AL2" 
    astrHeaders(2) = "AL3" 
    astrHeaders(3) = "AL4" 
    astrHeaders(4) = "AL5" 

    astrSeries(0) = "Series Name" 

    aintValues(0) = 1 
    aintValues(1) = 3 
    aintValues(2) = 17 
    aintValues(3) = 1 
    aintValues(4) = 7 

    objChart.Type = .Constants.chChartTypeColumnClustered 

    Call objChart.SetData(chDimSeriesName, .Constants.chDataLiteral, astrSeries) 
    Call objChart.SetData(chDimCategories, .Constants.chDataLiteral, astrHeaders) 
    Call objChart.SeriesCollection(0).SetData(.Constants.chDimValues, .Constants.chDataLiteral, aintValues) 

End With 
End Sub 


Public Sub AddValuesFromSpreadsheet() 
Dim objChart1 As ChChart 

With ThisDisplay.ChartSpace1 
    Do While .Charts.Count > 0 
     ThisDisplay.ChartSpace1.Charts.Delete (0) 
    Loop 

    Set .DataSource = ThisDisplay.sstChartData 

    Set objChart1 = .Charts.Add 
    ' Set the chart type. 
    objChart1.Type = .Constants.chChartTypeColumnClustered 

    ' Display titles 
    objChart1.HasTitle = True 
    objChart1.Title.Caption = "Chart Title" 

    ' Bind the series name to cell B1 in the first sheet of the spreadsheet 
    objChart1.SetData chDimSeriesNames, .Constants.chDataBound, "B1" 

    ' Bind the category axis to cell A2:A28 in the first sheet of the spreadsheet. 
    objChart1.SetData chDimCategories, .Constants.chDataBound, "A2:A6" 

    ' Bind the values of the data series to cells B2:B28 in the first sheet of the spreadsheet. 
    objChart1.SeriesCollection(0).SetData chDimValues, .Constants.chDataBound, "B2:B6" 

End With 
End Sub 

関連する問題