I'm trying to copy two sets of 3 lines that form arrows from one part of an MS Word document to another using a VBA macro. As the code below shows, I have declared an array (Arrows) as "shape". In the code I define a range that subsumes the six shapes. Then I try to assign each of the shapes to the array elements. Three problems arise. First, the count reveals that it is only finding 5 of the six line shapes in the range. Second, as soon as I try to assign a shape item to an array element (e.g., Arrows(1)), I get a "Run-time error 91, Object variable or With block variable not set." Finally, how do I insert the copied shapes (once you help me figure out how to copy them) into the selection area? Can I use "Selection.text = Arrows(1) + Arrows(2) + ..."? Here's my code so far:
Dim Arrows(6) As Shape
Dim ArrowRange As Range
RHIndex = 8
Set ArrowRange = ActiveDocument.Range(ActiveDocument.Tables(RHIndex).Range.Start, ActiveDocument.Tables
(RHIndex + 1).Range.Start)
ShapeCount = ArrowRange.ShapeRange.Count
Arrows(1) = ArrowRange.ShapeRange.Item(1)
Arrows(2) = ArrowRange.ShapeRange.Item(2)
Arrows(3) = ArrowRange.ShapeRange.Item(3)
Arrows(4) = ArrowRange.ShapeRange.Item(4)
Arrows(5) = ArrowRange.ShapeRange.Item(5)
Arrows(6) = ArrowRange.ShapeRange.Item(6)
ActiveDocument.Tables(TablesIndex).Select
Selection.EndOf wdTable
Selection.MoveDown wdLine, 1, wdMove
Selection.Text = Arrows(1) + Arrows(2)
Selection.MoveDown wdLine, 1, wdMove
Selection.Text = Arrows(2) + Arrows(4)
Selection.MoveDown wdLine, 1, wdMove
Selection.Text = Arrows(3) + Arrows(6)
Selection.MoveDown wdLine, 1, wdMove
.
.
.
I would greatly appreciate anyone's help with this.
Dim Arrows(6) As Shape
Dim ArrowRange As Range
RHIndex = 8
Set ArrowRange = ActiveDocument.Range(ActiveDocument.Tables(RHIndex).Range.Start, ActiveDocument.Tables
(RHIndex + 1).Range.Start)
ShapeCount = ArrowRange.ShapeRange.Count
Arrows(1) = ArrowRange.ShapeRange.Item(1)
Arrows(2) = ArrowRange.ShapeRange.Item(2)
Arrows(3) = ArrowRange.ShapeRange.Item(3)
Arrows(4) = ArrowRange.ShapeRange.Item(4)
Arrows(5) = ArrowRange.ShapeRange.Item(5)
Arrows(6) = ArrowRange.ShapeRange.Item(6)
ActiveDocument.Tables(TablesIndex).Select
Selection.EndOf wdTable
Selection.MoveDown wdLine, 1, wdMove
Selection.Text = Arrows(1) + Arrows(2)
Selection.MoveDown wdLine, 1, wdMove
Selection.Text = Arrows(2) + Arrows(4)
Selection.MoveDown wdLine, 1, wdMove
Selection.Text = Arrows(3) + Arrows(6)
Selection.MoveDown wdLine, 1, wdMove
.
.
.
I would greatly appreciate anyone's help with this.