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

时间:2017-02-21 05:22:34

标签: excel vba excel-vba

我有一张Excel工作表,有四个形状和几个按钮来运行宏。这些形状被命名为topCircle,leftCircle,rightCircle& midCircle。

希望其中一个按钮运行宏,将四个形状复制到剪贴板,以粘贴到其他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

但是收到错误“对象不支持此属性或方法”。没有运气也尝试过其他一些事情。有关如何使其工作的任何想法?干杯!

1 个答案:

答案 0 :(得分:2)

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

选项1 :首先使用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循环浏览Shapes工作表中的所有myDocument,如果它计算了您想要的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