The following subroutine imports pictures and textboxes from a source Worksheet to a target Worksheet. The target worksheet is in the Active workbook, but not necessarily the ActiveSheet. The source Worksheet is in another (open) Workbook. The Shapes are copied successfully, but changing their position has no effect. The target Worksheet is protected, but unprotecting it has no effect.
Sub importShapes(target As Worksheet, source As Worksheet)
Dim sourceShape As Shape
For Each sourceShape In source.Shapes
If sourceShape.Type = msoPicture Or sourceShape.Type = msoTextBox Then
sourceShape.Copy
target.Paste
Dim targetShape As Shape
Set targetShape = target.Shapes(target.Shapes.Count) ' the shape just added
targetShape.top = sourceShape.top
targetShape.left = sourceShape.left
End If
Next
End Sub