If the images in the Dashboard are dynamic images (they are linked to ranges), I would modify the proposal snb to this form:
Sub RestoreSnaphots()
With Worksheets("Sheet1").Range("A1:A5")
.CopyPicture
Call PastePic(Worksheets("Dashboard").Range("B2"), .Address(External:=True))
End With
With Worksheets("Sheet2").Range("D10:G15")
.CopyPicture
Call PastePic(Worksheets("Dashboard").Range("E2"), .Address(External:=True))
End With
End Sub
Sub PastePic(rng As Range, Optional Formula As String = "")
Dim Shp As Shape
Dim wks As Worksheet
Dim wksActv As Worksheet
Set wksActv = ActiveSheet
Application.ScreenUpdating = False
Set wks = rng.Parent
wks.Activate
For Each Shp In wks.Shapes
If Shp.TopLeftCell.Address = rng.Address Then
Shp.Delete
'Exit For
End If
Next Shp
wks.Paste rng
If Len(Formula) > 0 Then
wks.Shapes(wks.Shapes.Count).DrawingObject.Formula = Formula
End If
ActiveCell.Activate
wksActv.Activate
End Sub
You should find a moment when you start the RestoreSnapshots procedure. Perhaps the good time is to open the workbook and maybe activate the Dashboard. You have to decide for yourself when to use the right event.
Once you're sure the Dashboard contains unique images, you can uncomment the line:
If the images are to be static, do not specify a second parameter when calling PastePic.
Artik