フォルダ内にある大量のエクセルブックすべてを画像保存したいんだけど、1つづつ作業するのは大変すぎる!
そんな悩みを解決します。
ExcelVBAを使用して、フォルダ内に保存しているエクセルファイルを開き、グラフシートを画像(png)で保存する方法です。
あわせて読みたい


エクセルグラフを図(png・jpeg等)として保存またはPDF保存する
エクセルのグラフを図(png等)で保存する方法です。 pngで保存 フォルダ内に複数あるブック(グラフシート)を画像保存する サンプルコード ・pngやjpeg 保存形式:png...
目次
エクセルブックを画像に変換保存する例
例
- マクロ実行前:エクセルファイル(赤枠)
- マクロ実行後:保存後のファイル(緑枠)が増えます。ファイルの保存先は「F:\sample」です。

画像保存するもとのエクセルデータ
エクセルブックのグラフシートです。これを画像として保存します。

マクロ実行ブック
画像保存したいファイルを一覧に書き出しマクロ実行する方法です。

参考
B列に記載されているファイルが対象です。
グラフシートがアクティブでなくても実行可能なコード
画僧保存するもとのエクセルブックにはシートが2つあります。
- グラフシート
- グラフの参照データ
サンプルコード
グラフの参照データがアクティブでもっ実行可能なコードです。
Sub sample1() Const fPath As String = "F:\sample\" Dim fName As String Dim pName As String Dim i As Long For i = 2 To 5 fName = Cells(i, 2) & ".xlsx" pName = Cells(i, 2) & ".png" If Dir(fPath & fName) <> "" Then Workbooks.Open Filename:=fPath & fName Charts(1).Export Filename:=fPath & pName, filtername:="PNG" ActiveWorkbook.Close SaveChanges:=False End If Next i End Sub
説明
- 7・15行目:For~Nextでシート[一覧]2行目~5行目まで処理を繰り返します。
最終行が変動する場合は「5」を「Cells(Rows.Count, 1).End(xlUp).Row」とする方法もあり - 8行目:変数:画像保存したいグラフシートのあるブックです。
- 9行目:変数・png保存するファイル名です。
- 10行目:グラフシートのあるエクセルブックがある場合ブックを開きます。
- 11行目:グラフシートのあるエクセルブックを開きます。
- 12行目:グラフシートをpngで保存します。
- 13行目:グラフシートのあるブックを保存せずに閉じます。
エクセルブックの保存先をファイル[一覧]に設定する方法
ファイル保存先をシート上のセルE1に設定する例です。

2行目の定数を次のように変更します。
Dim fPath As String: fPath = Cells(1, 5)
C列にはハイパーリンク関数を設定します。
画像サイズがバラバラになる場合
保存した画像(png)のサイズが統一れてない場合、グラフシートの倍率が違う可能性があります。
次の画面はズーム倍率が違うグラフシートをpng保存した画像を貼り付けた例です。

グラフシートがアクティブでなくても実行可能なコードのサンプルコード11行目の後を変更します。
Charts(1).Select ActiveWindow.Zoom = 80 Charts(1).Export Filename:=fPath & pName, filtername:="PNG" ActiveWorkbook.Close SaveChanges:=False
説明
- 1行目:グラフシートを選択します。
- 2行目:グラフシートの倍率を80%に設定する例です。
- 3行目:グラフシートをpngで保存します。
- 4行目:エクセルブックを保存せずに閉じます。保存したい場合は「SaveChanges:=True」にします。