Excelでのレポート自動生成や、グラフを他のドキュメントで再利用する場面では、グラフを画像として保存するニーズがよくあります。たとえば、PowerPointレポートへの埋め込み、メールでの共有、Webでの可視化表示などに活用されます。C# を使って複数のグラフを一括で画像として出力することも、VBA を使って Excel 内からワンクリックで画像化することも可能です。
本記事では、C# および VBA を使って Excel 内のグラフを画像として保存する方法について、コード例と操作手順を交えて詳しく解説します。
C# を使って Excel グラフを画像として保存する
.NET 環境では、Free Spire.XLS for .NET を使用することで、Excel ファイル内のグラフを .jpg
形式の画像として簡単に出力できます。
Spire.XLS のインストール
NuGet パッケージマネージャーで以下のコマンドを実行します:
Install-Package FreeSpire.XLS
C# のサンプルコード
using Spire.Xls;
using System.Drawing;
Workbook workbook = new Workbook();
workbook.LoadFromFile("Sample.xlsx");
// すべてのワークシートとグラフを走査し、画像として保存
foreach (Worksheet sheet in workbook.Worksheets)
{
foreach (Chart chart in sheet.Charts)
{
Bitmap chartImage = chart.SaveToImage();
chartImage.Save($"output/{sheet.Name} - {chart.ChartTitle}.jpg");
}
}
workbook.Dispose();
操作の流れ
- 既存の Excel ファイルを読み込む
- すべてのワークシートをループ処理
- 各ワークシート内の
Chart
オブジェクトを取得 -
SaveToImage()
メソッドで画像化 -
.jpg
ファイルとして保存
利用シーン例:C# でのバッチ処理や、レポート生成システムへの組み込みなど
VBA を使って Excel グラフを画像として保存する
Excel の UI から直接グラフを画像として保存したい場合は、VBA マクロを使うと簡単に実現できます。外部ライブラリやアドインの導入は不要です。
VBA のコード例
Sub SaveAllChartsAsImages()
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim folderPath As String
Dim chartIndex As Integer
Dim fileName As String
' 保存先フォルダの設定
folderPath = ThisWorkbook.Path & "\Charts"
If Dir(folderPath, vbDirectory) = "" Then MkDir folderPath
chartIndex = 1 ' ファイル名用の番号付け
' すべてのワークシートを走査
For Each ws In ThisWorkbook.Worksheets
' 各ワークシート内のグラフオブジェクトを取得
For Each chartObj In ws.ChartObjects
fileName = folderPath & "\" & ws.Name & "_Chart" & chartIndex & ".jpg"
chartObj.Chart.Export Filename:=fileName, FilterName:="JPG"
chartIndex = chartIndex + 1
Next chartObj
Next ws
MsgBox "すべてのグラフを画像として保存しました。", vbInformation
End Sub
実行手順
- Excel ファイルを開く
Alt + F11
キーで VBA エディタを起動- [挿入] > [標準モジュール] を選択し、新規モジュールを追加
- 上記コードを貼り付ける
F5
キーでマクロを実行- 現在の Excel ファイルと同じディレクトリに
Charts
フォルダが作成され、すべてのグラフが.jpg
形式で保存されます
利用シーン例:開発不要で Excel 内から手軽にグラフ画像を取得したい一般ユーザー向け
出力例
以下は C# を使って出力したグラフ画像の一例です:
まとめ
方法 | メリット | 想定ユーザー |
---|---|---|
C# + Spire.XLS | バッチ処理対応、システム組み込み可能、自動化に最適 | 開発者、業務システム運用者 |
Excel VBA マクロ | 追加インストール不要、操作が直感的 | 一般ユーザー、非エンジニア |
グラフを自動で画像化したい場合でも、手動で素早く保存したい場合でも、これら2つの方法で多様なニーズに対応可能です。
さらに Excel ファイル処理の詳細を知りたい方は、以下のリソースも参考にしてください: