MS
continues to shows us their apparent lack of skills. To solve this I wrote a macro in Excel 2010 and copied it to Word 2010 (Word macro recorded is extremely poor). I had to change "activesheet" to "activedocument" but nothing else. The result gives the same
functionality we are looking for but it is slightly crude.
As stated in the code below, I wrote the macro, assigned it to a shortcut key, then insert a new rectangle to surround the objects I want to select and run the macro via the
shortcut.
If I can do this in VBA, Microsoft can implement it in Word 2010. (I am just an amateur.) My solution is not
the most elegant but it shows that it can be done in Word 2010.
It not really a solution that will work for those who don't play with macros. However in my mind it is clear
evidence that this is a BUG.
Sub selectobjects()
' Assign this macro to a Word keyboard shortcut, via File, Options, Customize Ribbon,
' Keyboard shortcuts, Categories = Macros, etc
' Insert a rectangle around the objects you want to select
' (as you would have with the Select Objects cursor)
' The run this macro by shortcut key from your document.
' Not yet tested when added to normal.dotm
Dim ShapeItems() As Variant ' must be variant with Option Base 0. First index is 0
Dim icount As Integer, ishape As Integer
icount = 0
ishape = 0
' find the last object
number corresponding to the selection rectangle just added
iobj = ActiveDocument.Shapes.Count
ActiveDocument.Shapes(iobj).Select
leftx = ActiveDocument.Shapes(iobj).Left ' find corners
topy = ActiveDocument.Shapes(iobj).Top
rightx = leftx + ActiveDocument.Shapes(iobj).Width
bottomy = topy + ActiveDocument.Shapes(iobj).Height
For Each myshape In ActiveDocument.Shapes
ishape = ishape + 1 ' count of all shapes
If myshape.Left > leftx And myshape.Top > topy And _
myshape.Left + myshape.Width < rightx And myshape.Top + _
myshape.Height < bottomy Then
ReDim Preserve ShapeItems(icount)
ShapeItems(icount) = ishape
icount = icount + 1 ' count of collected shapes
End If
Next
Selection.Delete ' delete the initial rectangle
' multiple select all objects inside the rectangle
ActiveDocument.Shapes.Range(ShapeItems).Select
End Sub