Sub CopyPasteShapes()
Dim wsh As Worksheet, oDest As Worksheet
Dim i As Long, oShape As Shape, oShape2 As Shape
'On Error Resume Next
Set wsh = Worksheets("Shapes")
For i = 3 To wsh.Cells(wsh.Rows.Count, "A").End(xlUp).Row
Set oDest = Worksheets(wsh.Cells(i, "A").Value2)
Set oShape = wsh.Shapes(wsh.Cells(i, "B").Value2)
oShape.Copy
oDest.Paste
Application.CutCopyMode = False
Set oShape2 = oDest.Shapes(oDest.Shapes.Count)
With oDest.Range("A" & i)
oShape2.Top = .Top
oShape2.Left = .Left
oDest.Activate
.Select
wsh.Select
End With
Next i
End Sub