【エクセルVBA】AddChart2メソッドでピボットテーブルからグラフを作る方法

eyecatch,vba,graph

皆様こんにちは、ノグチです。

エクセルのグラフやピボットテーブル、レポートを作りたいときにとても便利ですよね。

ピボットテーブルをVBAで作成する方法は、以前の記事でお伝えしました。

エクセルVBAでピボットテーブルを作成!PivotCacheにデータソース範囲をセットする
ピボットテーブルをVBAで作成する1ステップ目、ピボットテーブルのデータソース範囲を指定する方法をご紹介しています。またVBAでピボットテーブルを作成する前提知識として、ピボットキャッシュとは?やデータソースからピボットテーブルが作成される流れも簡単にご紹介しています。

VBAでピボットテーブルが作成できるなら、グラフだって作成できてもよいのでは…?

ということで今回は、エクセルVBAでピボットテーブルからグラフを作成する方法をご紹介します!

スポンサーリンク

AddChart2メソッドでワークシートにグラフを追加する

ではまず、ワークシートにグラフを追加しましょう。

グラフを追加するには、ShapesオブジェクトのAddChart2メソッドを使います。

AddChart2メソッドは、ワークシート上にグラフを追加して、そのグラフのShapesオブジェクトを返り値として返してくれるメソッドです。

AddChart2メソッドの記述方法

AddChart2メソッドの記述方法はこちら。

Shapesオブジェクト.AddChart2(プロパティ)

AddChart2メソッドのプロパティ

AddChart2メソッドには、主にこのようなプロパティがあります。

プロパティ名 プロパティの説明
XlChartType 作成するグラフの種類を、数値または定数で指定します。
Left グラフをワークシート上に配置する左位置を指定します。
Top グラフをワークシート上に配置する上位置を指定します。
Width ワークシート上のグラフの横幅を指定します。
Height ワークシート上のグラフの縦幅を指定します。

XlChartTypeプロパティで指定するグラフの種類

XlChartTypeプロパティには、作成したいグラフの定数または数値を指定します。
グラフの数だけ指定できる定数があるのですが、そのうちの代表的なものをご紹介します。

定数 作成できるグラフの種類
xlcolumnclustered(51) 集合縦棒
xlbarclustered(57) 集合横棒
xlpie(5) 円グラフ

定数横にある()内の数値は、定数以外で指定する数値を表しています。

上記の3つ以外の定数については、下記のMicrosoftのページで説明されていますので、参考になさって下さいね。

XlChartType 列挙 (Excel)
Office VBA リファレンス トピック

SetSourceDataメソッドでグラフのデータをセット

AddChart2メソッドのプロパティには、グラフのデータを指定するものがありませんでしたよね。

実はAddChart2メソッドを実行するだけでは、このような真っ白なグラフ用フィールドが作成されるだけなのです。

ピボットテーブル、グラフエリア追加

ワークシート上にグラフを追加するためには、このAddChart2メソッドと、グラフにデータソースをセットするメソッドが必要なのです。

SetSourceDataメソッドの記述方法

グラフにデータをセットするときに使うのが、ChartオブジェクトのSetSourceDataメソッドです。

パラメータには、グラフのデータソースにしたい範囲を指定します。

記述方法はこちら。

Chartオブジェクト.SetSourceData Source:=グラフのデータソースにしたい範囲(Range型)

グラフのデータソースにピボットテーブルをセットするコード

では、上で作成したグラフに、こちらのF2セルからG8セルの範囲にある、「売上」という名前のピボットテーブルをデータソースとしてセットしてみましょう。

ピボットテーブル

コードはこちら。

Sub Graph_From_PivotTable()
Dim pvtChart As Shape

Set pvtChart = ActiveSheet.Shapes.AddChart2(XlChartType:=51, _
                                                                    Left:=450, _
                                                                    Top:=20, _
                                                                    Height:=200, _
                                                                    Width:=300)
    
pvtChart.Chart.SetSourceData Source:=ActiveSheet.PivotTables("売上").DataBodyRange

End Sub

「売上」というピボットテーブルをデータソースとした、円グラフをワークシート上に追加する、というコードです。

こちらのコードを実行すると…

ピボットテーブル、グラフ追加

このように、ピボットテーブルをデータソースにした円グラフが作成されましたね!

AddChart2メソッドの使用が推奨されている

AddChart2メソッドは、末尾に”2″がついている通り、実はAddChartメソッドも存在しますし、Excel2013以降も利用することができます。

しかしMicrosoftは、AddChartメソッドは、Excel2013以前との下位互換のために残されているもので、Excel2013以降での使用は推奨していません。

特段の理由が無ければ、AddChart2メソッドを利用したほうが良さそうですね。

最後に

今回は、ピボットテーブルからグラフを作成する方法をご紹介しました。

面倒なレポート作成も、グラフやピボットテーブルをVBAで作成することができれば、ぐっと楽になるかもしれませんよ。

それでは、最後までお読みいただきありがとうございました!

タイトルとURLをコピーしました