Option Explicit
Sub test()
Dim errorMessage As String
If Not ExportRangeToImage(Range("E5:F24"), "C:\Users\Ian\Desktop\SCREEN SHOTS\MyImage.jpg", errorMessage) Then 'change the image filename as desired
MsgBox errorMessage, vbCritical, "Error"
Exit Sub
End If
MsgBox "Range has been exported successfully!", vbExclamation
End Sub
Public Function ExportRangeToImage(ByVal rangeToExport As Range, ByVal saveAsFileName As String, ByRef errorMessage As String) As Boolean
'export range to .bmp, .gif, .jpg, or .png image file
On Error GoTo errorHandler
rangeToExport.CopyPicture appearance:=xlScreen, Format:=xlPicture
With rangeToExport.Parent.ChartObjects.Add(Left:=rangeToExport.Left, Top:=rangeToExport.Top, Width:=rangeToExport.Width + 2, Height:=rangeToExport.Height + 2)
.Activate
With .Chart
.ChartArea.Format.Line.Visible = msoFalse
.Paste
With .Pictures(1)
.Left = .Left + 2
.Top = .Top + 2
End With
.Export fileName:=saveAsFileName
End With
.Delete
End With
ExportRangeToImage = True
Exit Function
errorHandler:
errorMessage = "Error " & Err.Number & ": " & Err.Description
ExportRangeToImage = False
End Function