【VBA】グラフのテンプレートを活用して一括整形する方法

Excelで複数のグラフを作成していると、
「毎回同じデザインを手動で整えるのが面倒…」
「会社や部署でグラフのスタイルを統一したい…」
と感じたことはありませんか?

そんなときに便利なのが、**グラフテンプレート(.crtxファイル)**の活用です。

VBAを使えば、テンプレートの保存と一括適用が可能になります。
この記事では、テンプレートの作り方からVBAでの適用方法まで、
初心者にもわかりやすく解説します。


1. グラフテンプレートとは?

グラフテンプレート(拡張子:.crtx)とは、
「グラフのデザイン設定(色・フォント・凡例・線の太さなど)」を保存したファイルのことです。

テンプレートを使うことで、次のようなメリットがあります。

  • グラフの見た目を統一できる
  • 毎回の書式設定作業を省ける
  • 他のブックやプロジェクトでも再利用できる

2. 手動でグラフテンプレートを作成する手順

まずは、Excel上でテンプレートファイルを作成しておきます。

  1. デザインを整えたグラフを右クリック
  2. 「テンプレートとして保存」を選択
  3. ファイル名を付けて保存(例:MyChartStyle.crtx

保存先は通常、次のフォルダに格納されます。(環境によっては異なる場合あり)

C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Templates\Charts

💡この.crtxファイルを他のPCにコピーすれば、
他の環境でも同じデザインを再現できます。


3. VBAでテンプレートを適用する構文

VBAでは、以下のように Chart.ApplyChartTemplate メソッドを使ってテンプレートを適用します。

With ActiveSheet.ChartObjects(1).Chart
    .ApplyChartTemplate "C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Templates\Charts\MyChartStyle.crtx"
End With

この1行で、テンプレートに保存された色・フォント・スタイルなどを
瞬時に反映できます。


4. 複数グラフに一括適用する方法

同じデザインを複数のグラフに反映したい場合は、
For Each構文を使って一括でテンプレートを適用できます。

Sub ApplyTemplateToAllCharts()
    Dim ws As Worksheet
    Dim co As ChartObject
    Dim templatePath As String

    'テンプレートファイルのパスを指定
    templatePath = "C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Templates\Charts\MyChartStyle.crtx"

    Set ws = ActiveSheet

    For Each co In ws.ChartObjects
        co.Chart.ApplyChartTemplate templatePath
    Next co

    MsgBox "すべてのグラフにテンプレートを適用しました。"
End Sub

これにより、シート内の全てのグラフに同じスタイルを一括で適用できます。
報告資料や定例レポートで、統一感のある見た目を実現できます。


5. 会社・チームで使い回す方法(共有運用)

複数人で同じテンプレートを使う場合は、
共通フォルダやネットワークドライブにテンプレートを配置します。

templatePath = "\\ServerName\Share\Templates\MyChartStyle.crtx"

これにより、チーム全員が同じテンプレートを利用でき、
社内資料のデザインを標準化することが可能です。


6. 応用:グラフ作成と同時にテンプレートを適用する

新しいグラフを作成した際に、最初からテンプレートを適用することもできます。

Sub CreateChartWithTemplate()
    Dim ws As Worksheet
    Dim co As ChartObject
    Dim templatePath As String

    templatePath = "C:\Users\<ユーザー名>\AppData\Roaming\Microsoft\Templates\Charts\MyChartStyle.crtx"

    Set ws = ActiveSheet

    'グラフを作成
    Set co = ws.ChartObjects.Add(Left:=100, Top:=50, Width:=400, Height:=300)
    With co.Chart
        .SetSourceData Source:=ws.Range("A1:B6")
        .ChartType = xlColumnClustered

        'テンプレートを適用
        .ApplyChartTemplate templatePath
    End With
End Sub

これにより、最初から整ったデザインでグラフを作成できます。


7. まとめ

操作内容使用メソッド説明
テンプレートを適用.ApplyChartTemplateデザインを反映
グラフ作成時に適用.ApplyChartTemplate + .SetSourceData作成直後に整形
一括適用For Eachループシート全体に適用
共有利用ネットワークパス指定社内共通テンプレート化

💡ポイント

  • .crtxファイルを保存しておけば、他のPCでも同じ見た目を再現できる
  • VBAで .ApplyChartTemplate を使えば、一瞬で統一感あるグラフを作成可能
  • 共通テンプレートを活用すれば、社内資料のクオリティを均一化できる

コメント

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