Friday, May 13, 2011

Save Range as Picture File. Simple solution.


PROBLEM:

How to save Excel range into image file. VBA macro in Excel 2007.

SOLUTION:
Create an empty chart, paste range image into chart area, and Export as image file.

''' Set Range you want to export to file
Dim rgExp As Range: Set rgExp = Range("B5:H14")
''' Copy range as picture onto Clipboard
rgExp.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
''' Create an empty chart with exact size of range copied
With ActiveSheet.ChartObjects.Add(Left:=rgExp.Left, Top:=rgExp.Top, _
Width:=rgExp.Width, Height:=rgExp.Height)
.Name = "ChartVolumeMetricsDevEXPORT"
.Activate
End With
''' Paste into chart area, export to file, delete chart.
ActiveChart.Paste
ActiveSheet.ChartObjects("ChartVolumeMetricsDevEXPORT").Chart.Export "C:\testmeExportChart.jpg"
ActiveSheet.ChartObjects("ChartVolumeMetricsDevEXPORT").Delete

Modify code to suite to your needs.