【问题标题】:excel Copy shapes from one worksheet to anotherexcel 将形状从一个工作表复制到另一个工作表
【发布时间】:2018-02-23 15:04:37
【问题描述】:

我正在尝试使用宏将所有形状(图像)从工作表复制到另一个工作表。我使用了记录宏来完成它,但它总是给形状一个随意的名称,当我们不知道形状的名称时就无法重现它。

【问题讨论】:

标签: excel vba shapes


【解决方案1】:

这会将所有形状从Sheet1复制到Sheet2

Sub CopyShape()
    Dim s As Shape
    For Each s In Sheets("Sheet1").Shapes
        s.Copy
        Sheets("Sheet2").Paste
    Next s
End Sub

复制完成后,您可以随意放置它们或重命名它们。
(另一种方法是复制整个工作表。) p>

编辑#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

如果您执行重新复制,请小心避免名称冲突。

【讨论】:

  • 复制/粘贴工作正常,非常感谢。但是这个答案将形状放在左上角,而我正在寻找将它们放在源工作表中的相同位置
  • @HugoSilva 查看我的EDIT#1
  • Set shp2 = s2.Shapes(s2.Shapes.Count) 返回错误(需要对象)
  • @HugoSilva 我无法重现您看到的错误。
  • @HugoSilva 尝试在Sheet2上不使用任何形状
猜你喜欢
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 2013-10-26
  • 2011-03-14
相关资源
最近更新 更多