1. はじめに
Excelではグラフを作成し、データの視覚化を行えます。
VBAからグラフを操作する際、2つの重要なオブジェクトが登場します。
- ChartObject:ワークシートに埋め込まれた「グラフの枠」や「グラフのコンテナ」となるオブジェクト。
- Chart:実際のグラフの中身、つまりグラフのデータ系列や軸、タイトルなどの構造を持つオブジェクト。
この2つは密接に関連しつつも異なる役割を持ち、VBAでグラフを扱う際に理解が不可欠です。
2. ChartObjectとは?
ChartObject
は、ワークシート上に配置されている埋め込みグラフの「枠」や「容器」を表します。
- サイズ(幅・高さ)や位置(左端・上端)など、グラフの「外枠」の操作が可能です。
Worksheet.ChartObjects
コレクションに含まれます。
ChartObject
の中にChart
オブジェクトが格納されています。
主なプロパティ
プロパティ | 説明 |
---|
Name | グラフオブジェクト名 |
Left | シート内の左端の位置(ポイント) |
Top | シート内の上端の位置(ポイント) |
Width | グラフ枠の幅(ポイント) |
Height | グラフ枠の高さ(ポイント) |
Visible | グラフの表示・非表示 |
Chart | 内包する実際のグラフオブジェクト |
主なメソッド
メソッド | 説明 |
---|
Activate | グラフオブジェクトを選択・アクティブ化 |
Copy | グラフオブジェクトをコピー |
Delete | グラフオブジェクトを削除 |
Duplicate | グラフオブジェクトの複製 |
Select | グラフオブジェクトの選択 |
3. Chartとは?
Chart
は、グラフの「中身」の構造を表すオブジェクトです。
- データ系列、軸、タイトル、凡例、データラベルなど、グラフの詳細な設定を管理。
ChartObject.Chart
プロパティで取得します。
- グラフシート(チャート専用のシート)に直接存在する場合も
Chart
オブジェクトとして扱われます。
主なプロパティ
プロパティ | 説明 |
---|
ChartType | グラフの種類(例:棒グラフ、折れ線グラフ) |
HasTitle | グラフタイトルの有無 |
ChartTitle | グラフタイトルオブジェクト |
SeriesCollection | データ系列コレクション |
Axes | 軸オブジェクトコレクション |
Legend | 凡例オブジェクト |
主なメソッド
メソッド | 説明 |
---|
SetSourceData | グラフの元データ範囲を設定 |
Refresh | グラフを更新 |
ApplyLayout | グラフのレイアウトを適用 |
Export | グラフを画像として保存 |
4. ChartObjectの取得と操作例
4-1. 既存グラフの操作
Sub ChartObject操作例()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim co As ChartObject
Set co = ws.ChartObjects(1) ' 1番目のグラフオブジェクト取得
' グラフ枠のサイズ変更
co.Width = 400
co.Height = 300
' 位置変更
co.Left = 100
co.Top = 50
' グラフをアクティブ化
co.Activate
End Sub
4-2. 新規グラフの追加
Sub 新規ChartObject追加()
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
Dim co As ChartObject
Set co = ws.ChartObjects.Add(Left:=50, Top:=50, Width:=400, Height:=300)
co.Name = "MyChart"
' グラフの種類設定
co.Chart.ChartType = xlColumnClustered
' 元データの指定
co.Chart.SetSourceData Source:=ws.Range("A1:B5")
End Sub
5. Chartオブジェクトの操作例
5-1. グラフの種類変更
Sub グラフ種類変更()
Dim co As ChartObject
Set co = Worksheets("Sheet1").ChartObjects("MyChart")
co.Chart.ChartType = xlPie
End Sub
5-2. グラフタイトルの設定
Sub グラフタイトル設定()
Dim co As ChartObject
Set co = Worksheets("Sheet1").ChartObjects(1)
co.Chart.HasTitle = True
co.Chart.ChartTitle.Text = "売上推移"
End Sub
5-3. データ系列の操作
Sub データ系列操作()
Dim co As ChartObject
Set co = Worksheets("Sheet1").ChartObjects(1)
Dim series As Series
Set series = co.Chart.SeriesCollection(1)
series.Name = "2025年売上"
series.Values = Worksheets("Sheet1").Range("B2:B6")
series.XValues = Worksheets("Sheet1").Range("A2:A6")
End Sub
6. 埋め込みグラフ(ChartObject)とグラフシート(Chart)の違い
項目 | 埋め込みグラフ (ChartObject ) | グラフシート (Chart ) |
---|
存在場所 | 通常のワークシート上 | 独立したグラフ専用のシート |
操作対象 | ChartObject のChart プロパティでアクセス | 直接Chart オブジェクトとして操作 |
サイズや位置調整 | 可能(ワークシート上の位置・大きさ) | シート全体がグラフ |
用途 | レポートシートに複数のグラフを配置 | 単独のグラフ専用表示 |
7. よく使うChart関連定数例
定数名 | 説明 |
---|
xlColumnClustered | クラスタ化された縦棒グラフ |
xlLine | 折れ線グラフ |
xlPie | 円グラフ |
xlBarClustered | クラスタ化された横棒グラフ |
xlArea | 面グラフ |
8. ChartObjectの応用的な操作例
8-1. グラフのコピー・貼り付け
Sub グラフコピー貼り付け()
Dim co As ChartObject
Set co = Worksheets("Sheet1").ChartObjects(1)
co.Copy
Worksheets("Sheet2").Paste Destination:=Worksheets("Sheet2").Range("A1")
End Sub
8-2. グラフの削除
Sub グラフ削除()
Worksheets("Sheet1").ChartObjects("MyChart").Delete
End Sub
9. ChartObjectとChartのまとめ
項目 | ChartObject | Chart |
---|
役割 | ワークシート上のグラフのコンテナ | グラフのデータや構造を表すオブジェクト |
所属コレクション | Worksheet.ChartObjects コレクション | ChartObject.Chart またはCharts コレクション |
操作可能項目 | 位置・サイズ調整、表示制御、コピー等 | グラフタイプ設定、系列操作、タイトル設定等 |
作成メソッド | ChartObjects.Add | PivotCaches.CreatePivotTable などとは別 |
10. さいごに
ChartObject
とChart
は、Excel VBAでグラフ操作を行う上での基本オブジェクトです。
ChartObject
でグラフの位置やサイズを調整し、Chart
でグラフの中身(データ系列、軸、タイトルなど)を細かく設定することで、自在なグラフ操作が可能になります。