指定したセル範囲を画像として保存したい
エクセルのデータ(テーブルやセル)を、画像として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の自動変換でした。その機能をオフにしました。