皆様こんにちは、ノグチです。
エクセルのグラフやピボットテーブル、レポートを作りたいときにとても便利ですよね。
ピボットテーブルをVBAで作成する方法は、以前の記事でお伝えしました。
VBAでピボットテーブルが作成できるなら、グラフだって作成できてもよいのでは…?
ということで今回は、エクセルVBAでピボットテーブルからグラフを作成する方法をご紹介します!
AddChart2メソッドでワークシートにグラフを追加する
ではまず、ワークシートにグラフを追加しましょう。
グラフを追加するには、ShapesオブジェクトのAddChart2メソッドを使います。
AddChart2メソッドは、ワークシート上にグラフを追加して、そのグラフのShapesオブジェクトを返り値として返してくれるメソッドです。
AddChart2メソッドの記述方法
AddChart2メソッドの記述方法はこちら。
AddChart2メソッドのプロパティ
AddChart2メソッドには、主にこのようなプロパティがあります。
プロパティ名 | プロパティの説明 |
---|---|
XlChartType | 作成するグラフの種類を、数値または定数で指定します。 |
Left | グラフをワークシート上に配置する左位置を指定します。 |
Top | グラフをワークシート上に配置する上位置を指定します。 |
Width | ワークシート上のグラフの横幅を指定します。 |
Height | ワークシート上のグラフの縦幅を指定します。 |
XlChartTypeプロパティで指定するグラフの種類
XlChartTypeプロパティには、作成したいグラフの定数または数値を指定します。
グラフの数だけ指定できる定数があるのですが、そのうちの代表的なものをご紹介します。
定数 | 作成できるグラフの種類 |
---|---|
xlcolumnclustered(51) | 集合縦棒 |
xlbarclustered(57) | 集合横棒 |
xlpie(5) | 円グラフ |
定数横にある()内の数値は、定数以外で指定する数値を表しています。
上記の3つ以外の定数については、下記のMicrosoftのページで説明されていますので、参考になさって下さいね。
SetSourceDataメソッドでグラフのデータをセット
AddChart2メソッドのプロパティには、グラフのデータを指定するものがありませんでしたよね。
実はAddChart2メソッドを実行するだけでは、このような真っ白なグラフ用フィールドが作成されるだけなのです。
ワークシート上にグラフを追加するためには、このAddChart2メソッドと、グラフにデータソースをセットするメソッドが必要なのです。
SetSourceDataメソッドの記述方法
グラフにデータをセットするときに使うのが、ChartオブジェクトのSetSourceDataメソッドです。
パラメータには、グラフのデータソースにしたい範囲を指定します。
記述方法はこちら。
グラフのデータソースにピボットテーブルをセットするコード
では、上で作成したグラフに、こちらの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で作成することができれば、ぐっと楽になるかもしれませんよ。
それでは、最後までお読みいただきありがとうございました!