سؤال

Is it possible to copy a shape in Word 2010 without resorting to .Select? According to Dev Center the Anchor property returns the shape's anchoring range. Could that be a way forward? However, the code below returns an error.

Sub createShape()
    Set myShape = ActiveDocument.Shapes.AddShape(msoShapeRectangle, 1, 1, 1, 1)
    myShape.Anchor.Copy
End Sub
هل كانت مفيدة؟

المحلول

While it does not seem to be possible to copy a shape without selecting it, it is possible to duplicate a shape without selecting it (which was my reason for wanting to copy it in the first place). The code below gives me what I was looking for:

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

نصائح أخرى

If you've got what you're looking for then thats great, but you can copy a shape as such by copying the paragraph (or range rather) that the shape is anchored to. For example:

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

The trouble with this however is that it will copy any text in the paragraph that you have anchored it to or your anchor maybe in a table which can cause strange things to happen.

You can also change the shape to an inline shape after inserting it so it fits with the text and has more obvious range as anchor points have a habit of moving around and being generally unpredictable.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top