
エクセルにまとめられたデータでグラフを作成する必要があるんだけど、
いちいち作るのがめんどう…。
マクロでササっとグラフを作れない?

なるほど…。
では今回は、「エクセルのマクロでグラフを自動生成する方法」を
VBAマクロ歴3年の私が、できるだけわかりやすく解説いたします。
エクセルのマクロでグラフを自動生成する方法
「ChartObjects」を使います。
まずは実行見本をどうぞ。
実行見本
ひとまず全コードと実行結果をご覧ください。
解説は後ほど行います。
全コード
下記コードは棒グラフを自動生成した例です。
後ほど他のグラフのコードも紹介いたします。
Sub 棒グラフ自動生成()
Dim ws As Worksheet
Dim chartObj As ChartObject
Set ws = ThisWorkbook.Sheets("Sheet1")
Set chartObj = ws.ChartObjects.Add(Left:=120, Width:=250, Top:=5, Height:=200)
With chartObj.Chart
.SetSourceData Source:=ws.Range("A1:B7")
.ChartType = xlColumnClustered
.HasTitle = True
.ChartTitle.Text = "成績推移"
End With
End Sub
実行結果

解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
プロシージャの作成
Sub 棒グラフ自動生成()
End Sub
プロシージャなど、マクロの基礎は下記記事でわかりやすく解説しております。
コードだけではなく、開発タブの表示からマクロの保存まで知りたい方はご参考ください。
変数の宣言
Dim ws As Worksheet
Dim chartObj As ChartObject
上記コードにて、以降使用する変数を宣言しています。
変数や宣言については、下記記事をご参考ください。
ワークシートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")
上記コードにて、ワークシートの指定を行っております。
今回は、現在開いているブックの「Sheet1」を指定しています。
シート名が異なる場合は、「Sheet1」の部分を変更してください。
グラフの生成位置・サイズを指定
Set chartObj = ws.ChartObjects.Add(Left:=120, Width:=250, Top:=5, Height:=200)
上記コードにて、グラフの生成位置とサイズを指定しています。
- Left:エクセルの左端からの距離(pt)
- Width:グラフの横幅(pt)
- Top:エクセルの上端からの距離(pt)
- Height:グラフの高さ(pt)

単位はポイント(pt)です。
大きさが想像しにくいですが、何度も試行錯誤してベストな位置・サイズを見つけましょう。
グラフを自動生成
With chartObj.Chart
.SetSourceData Source:=ws.Range("A1:B7")
.ChartType = xlColumnClustered
.HasTitle = True
.ChartTitle.Text = "成績推移"
End With
上記コードにて、グラフを自動生成しています。
必要に応じて下記の部分を変更してください。
- A1:B7:グラフ化するデータの範囲
- 成績推移:グラフのタイトル
- xlColumnClustered:棒グラフ
折れ線グラフ、円グラフを自動生成したい場合は、下記のように変更してください。
.ChartType = xlLine '折れ線グラフ

.ChartType = xlPie '円グラフ

グラフの種類をまとめてみました。ご参考ください。
- 棒グラフ:xlColumnClustered
- 折れ線グラフ:xlLine
- 円グラフ:xlPie
- 横棒グラフ:xlBarClustered
- 散布図:xlXYScatter
ボタンを押すことで今回のマクロを実行させることも可能です。
ボタンの作り方は、下記記事でわかりやすく解説しております。
うまく動作しないときの対処法
エラーが発生する
コンパイルエラー・実行時エラー
コードに問題がある場合が多いです。
「”」や()など、2つセットの記号が片方だけになっていないかなど、コードを再確認しましょう。
セル名を「”」で囲っていない場合でもエラーが発生します。
警告表示

上記の表示が出た場合は、マクロが無効になっています。
エクセルに表示された「コンテンツの有効化」をクリックするか、下記記事を参考にセキュリティ設定を変更してください。
最後に
エクセルのマクロを使ってグラフを自動生成する方法を解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!