VBA Excel将多个形状复制到剪贴板

我有一个Excel工作表,有四个形状和几个button来运行macros。 形状命名为topCircle,leftCircle,rightCircle和midCircle。

想要其中一个button来运行一个macros,将四个形状复制到剪贴板,粘贴到其他Office文档。

已经虽然各种MSDN文章(如https://msdn.microsoft.com/en-us/library/office/ff940375.aspx )但有麻烦。 试图模仿链接文章的例子,我写了这样的:

Set myDocument = Worksheets("Overall") myDocument.Shapes.Range(Array("leftCircle", "rightCircle", "topCircle", "midCircle")).Copy 

但是得到一个错误“对象不支持这个属性或方法”。 也尝试了一些其他的东西没有运气。 任何想法如何得到这个工作? 干杯!

看来,要从Excel工作表中复制多个形状,您有3个选项:

选项1 :使用Select首先select所有Shapes ,然后复制Selection

 myDocument.Shapes.Range(Array("leftCircle", "rightCircle", "topCircle", "midCircle")).Select Selection.Copy 

选项2 :使用Group对所有选定的形状进行分组,然后将它们复制在一起,然后使用Ungroup将其拆分:

 With myDocument.Shapes.Range(Array("leftCircle", "rightCircle", "topCircle", "midCircle")) .Group.Copy ' paste to wherever you want .Ungroup End With 

选项3 :使用For Each MyShape In myDocument.Shapes中循环遍历myDocument工作表中的所有Shapes ,并且如果对Shape.Name Shape.Name之一进行了Shape.Name请将其复制:

 Dim MyShape As Shape For Each MyShape In myDocument.Shapes Select Case MyShape.Name Case "leftCircle", "rightCircle", "topCircle", "midCircle" MyShape.Copy ' paste to wherever you want End Select Next MyShape