非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Excel/VBA】シート状の複数グラフを画像として一括保存する方法

   

Excelで作成したグラフを画像として保存したい場面は多いものです。特にプレゼン資料やレポート作成時にExcelのグラフをそのまま画像として利用することで作業がスムーズになります。

今回は、複数のグラフを自動で画像として保存する方法について解説します。シート内のボタンや図形など不要なオブジェクトを除外しグラフのみを選択して画像化するための手順を紹介していきます。

 

以下のコードは、Excelシート上にダミーデータを作成し、それをもとに複数のグラフを自動生成するためのものです。このコードを実行することで、異なるデータセットを使った複数のグラフを作成できます。

Sub SaveChartsAsImages()
    Dim ws As Worksheet
    Dim ch As ChartObject
    Dim chartCount As Integer
    Dim filePath As String
    Dim fileName As String
    
    ' 保存先のパスを指定(必要に応じて変更)
    filePath = "C:\Users\...\Charts\"
    
    ' シートを指定(現在のシートを使用する場合は ActiveSheet)
    Set ws = ActiveSheet
    
    ' ファイル名の開始番号
    chartCount = 1
    
    ' グラフオブジェクトをループ
    For Each ch In ws.ChartObjects
        ' 各グラフを画像としてエクスポート
        fileName = filePath & "Chart_" & chartCount & ".png"
        ch.Chart.Export Filename:=fileName, FilterName:="PNG"
        
        ' 次のグラフのためにカウントを増やす
        chartCount = chartCount + 1
    Next ch
    
    MsgBox "全てのグラフが保存されました。", vbInformation
End Sub
 

 

コードの解説
  • 保存先のパス設定filePath に画像を保存するフォルダを指定します。必要に応じてパスを変更してください。
  • グラフのループ処理: For Each ch In ws.ChartObjects でシート内のすべてのグラフを順番に処理し、Chart.Export メソッドを使って各グラフをPNG形式で保存します。
  • ファイル名の設定: グラフごとにユニークなファイル名をつけるため、カウント変数 chartCount を用いて連番を付与します。
  • 実行結果の通知: 全てのグラフが保存されると、メッセージボックスで通知されます。

このコードを使えば、シート内のすべてのグラフを個別の画像ファイルとして指定フォルダに保存されます。

 

 

スポンサーリンク

 - Excel, VBA