How to convert a range of Cell in Excel to Image file?

The following VBA code is a User Defined Function (UDF) that can save a group of continuous cells as a JPG file.

This UDF has one argument, which is defined at line 1 as imageRng. When using this function, it will expect the user to select a range of cells.

Lines 2 – 4 are declaring the variable sImageFilePath, which will contain the location and the name of the to be saved JPG file.

Line 5 – 6 are declaring and opening a new clean Excel workbook under the variable wbTemp, which will function as a mnemonic in the creation of the JPG file.

Line 7 – 13 will copy and paste imageRng as a picture in wbTemp and save it as a JPG file at location sImageFilePath.

Line 14 – 16 will produce a dialog box about the whereabouts of the JPG file and cleanup wbTemp to make the function ready for the next image to be saved as JPG.


Sub ExcelToJPGImage(imageRng As Range)
    'Code from officetricks.com
    Dim sImageFilePath As String
    sImageFilePath = ThisWorkbook.Path & Application.PathSeparator & "ExcelRangeToImage_"
    sImageFilePath = sImageFilePath & VBA.Format(VBA.Now, "DD_MMM_YY_HH_MM_SS_AM/PM") & ".jpg"
    
    'Create Temporary workbook to hold image
    Dim wbTemp As Workbook
    Set wbTemp = Workbooks.Add(1)
    
    'Copy image & Save to new file
    imageRng.CopyPicture xlScreen, xlPicture
    wbTemp.Activate
    With wbTemp.Worksheets("Sheet1").ChartObjects.Add(imageRng.Left, imageRng.Top, imageRng.Width, imageRng.Height)
        .Activate
        .Chart.Paste
        .Chart.Export Filename:=sImageFilePath, FilterName:="jpg"
    End With

    'Close Temp workbook
    wbTemp.Close False
    Set wbTemp = Nothing
    MsgBox "Image File Saved To: " & sImageFilePath
End Sub

If you would like to know more about how to do this refer to the below link as well.

External link: Learn to save Excel file as image