在没有.Select的情况下复制Word 2010中的形状?

时间:2013-02-11 16:09:14

标签: copy-paste word-vba word-2010

是否可以在不依靠.Select的情况下在Word 2010中复制形状?根据{{​​3}},Anchor属性返回形状的锚定范围。这可能是前进的方向吗?但是,下面的代码会返回错误。

Sub createShape()
    Set myShape = ActiveDocument.Shapes.AddShape(msoShapeRectangle, 1, 1, 1, 1)
    myShape.Anchor.Copy
End Sub

2 个答案:

答案 0 :(得分:1)

虽然似乎无法在不选择形状的情况下复制形状,但可以在不选择形状的情况下复制形状(这是我想要首先复制它的原因) )。下面的代码为我提供了我想要的东西:

Sub createShape()
    Set myshape = ActiveDocument.Shapes.AddShape(msoShapeRectangle, 100, 100, 100, 100)
    Set anothershape = myshape.Duplicate
End Sub

答案 1 :(得分:1)

如果你有你正在寻找的东西,那就太好了,但你可以通过复制形状所锚定的段落(或相当于范围)来复制形状。例如:

Sub createShape()
   Dim myShape As Shape, myRange As Range

   Set myShape = ActiveDocument.Shapes.AddShape(msoShapeRectangle, 10, 10, 10, 10)
   Set myRange = myShape.Anchor.Paragraphs(1).Range
   myRange.Copy
End Sub

然而,问题在于,它会将你已经锚定它的段落中的任何文本复制到你的锚可能会在一个可能导致奇怪事情发生的表格中。

您也可以在插入后将形状更改为内嵌形状,使其与文本相符,并且具有更明显的范围,因为锚点有习惯移动并且通常无法预测。