我有一张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
但是收到错误“对象不支持此属性或方法”。没有运气也尝试过其他一些事情。有关如何使其工作的任何想法?干杯!
答案 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