ChartObjectオブジェクトの取得

広告

グラフを表示するにはグラフシートを使う以外に、ワークシート内に埋め込みオブジェクトとしてグラフを表示することができます。

埋め込み式のグラフもChartオブジェクトである点に違いはありませんが、埋め込み式グラフの場合には、ワークシート内にまずグラフを表示するためコンテナであるChartObjectオブジェクトがあり、そのコンテナの中にChartオブジェクトが含まれている形になります。

そこでまずChartObjectオブジェクトを取得してみます。ChartObjectオブジェクトはWorksheetオブジェクトのChartObjectsメソッドを使います。

Dim chartObj As ChartObject

Set chartObj = ActiveSheet.ChartObjects(1)

「ChartObjects」メソッドの引数にはインデックス番号を指定します。インデックス番号はワークシートに含まれる埋め込みグラフのインデックス番号です。またインデックス番号の代わりにグラフ名を指定します。(ただ、Excel上でグラフ名を変更する手順が分かりませんでした)。

Dim chartObj As ChartObject

Set chartObj = ActiveSheet.ChartObjects("グラフ名")

ChartObjectオブジェクトからChartオブジェクトを取得

埋め込みグラフに対して様々な操作を行うには、ChartObjectオブジェクトからChartオブジェクトを取り出す必要があります。Chartオブジェクトを取り出すには、ChartObjectオブジェクトの「Chart」プロパティを使います。

Dim chartObj As ChartObject
Dim chart1 As Chart

Set chartObj = ActiveSheet.ChartObjects(1)
Set chart1 = chartObj.Chart

取得したChartオブジェクトは、グラフシートと同じように扱う事が可能です。(ただし、Activateメソッドなど一部使えないものはあります)。

サンプルプログラム

では簡単なサンプルで試してみましょう。

下記のようにワークシートの中に埋め込みグラフが1つある状態で、そのグラフの元になるデータを設定してみます。

埋め込みグラフの利用

testchart4.bas

Sub テスト()

    Dim chartObj As ChartObject
    Dim chart1 As Chart

    Set chartObj = ActiveSheet.ChartObjects(1)
    Set chart1 = chartObj.Chart

    chart1.SetSourceData Worksheets("Sheet1").Range("B2:E6")
    
End Sub

上記マクロを実行すると次のようになります。

埋め込みグラフの利用

※上記のサンプルではChartオブジェクトの「SetSourceData」メソッドを使ってグラフのデータ範囲を指定しています。詳しくは『グラフのデータ範囲の設定』を参照して下さい。

( Written by Tatsuo Ikura )