指定したセル範囲を画像として保存したい
エクセルのデータ(テーブルやセル)を、画像としてPCに保存したい場合があります。
例)
・エクセル関数でデータを作成したため、データが修正や編集される前に画像データとして保存したい。
・マクロ実行時、不具合発生時の設定値を画像データとしてエクスポート(退避)したい。
・エクセル関数でデータを作成したため、データが修正や編集される前に画像データとして保存したい。
・マクロ実行時、不具合発生時の設定値を画像データとしてエクスポート(退避)したい。
標準では上記のような関数やメソッドは存在しない為、自作する必要があります。
指定したセル範囲を画像として保存するサンプルコード
Public Sub test()
Dim FileSize As Long
Dim pic As ChartObject
Dim picName As String: picName = "\sample.png"
Dim rng As Range: Set rng = Range("A1:D15")
'■セル範囲を画像データでコピーする。
rng.CopyPicture
'■指定したセル範囲と同じサイズのpicを新規作成し、保存する。
Set pic = ActiveSheet.ChartObjects.Add(0, 0, rng.Width, rng.Height)
pic.Chart.Export ThisWorkbook.Path & picName
FileSize = FileLen(ThisWorkbook.Path & picName)
'■picのFileSizeを超えるまでループする(画像データが出来上がったら終了する)
Do Until FileLen(ThisWorkbook.Path & picName) > FileSize
pic.Chart.Paste
pic.Chart.Export ThisWorkbook.Path & picName
DoEvents
Loop
'■作成完了後、pic削除。
pic.Delete
Set pic = Nothing
End Sub
注意点
一度新規作成した上→再度画像データ作成をDo Untilでループしています。
これはCopyPictureがエラーになる・もしくは空白の画像で出力されるのを防ぐためです。



コメント
コード説明ありがとうございます。
いくつかの記号がHTMLになっています。
& →&
> →>
ありがとうございます。Wordpressの自動変換でした。その機能をオフにしました。