我正在尝试使用宏将所有形状(图像)从工作表复制到另一个工作表。我使用了记录宏来做到这一点,但它总是给形状一个随意的名字,当我们不知道形状的名称时就不可能重现它。
这会将所有形状从 复制Sheet1到Sheet2:
Sub CopyShape()
Dim s As Shape
For Each s In Sheets("Sheet1").Shapes
s.Copy
Sheets("Sheet2").Paste
Next s
End Sub
Run Code Online (Sandbox Code Playgroud)
复制完成后,您可以随意放置它们或随意重命名它们。
(另一种方法是制作整个工作表的副本。)
编辑#1:
此代码还将自动为复制的形状分配名称和位置:
Sub CopyShape()
Dim shp1 As Shape, nombre As String
Dim s1 As Worksheet, s2 As Worksheet
Dim shp2 As Shape
Set s1 = Sheets("Sheet1")
Set s2 = Sheets("Sheet2")
For Each shp1 In s1.Shapes
nombre = shp1.Name
shp1.Copy
s2.Paste
Set shp2 = s2.Shapes(s2.Shapes.Count)
shp2.Name = nombre
shp2.Top = shp1.Top
shp2.Left = shp1.Left
Next shp1
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您执行重新复制,请小心避免名称冲突。