アクティブシート上のグループ化図形を選択するExcelマクロをご紹介しました。
同じロジックでWordマクロも作れます。
グループ化されている図形・オブジェクトを選択するサンプルマクロ
以下のWordマクロでアクティブページ上のグループ化されている図形を選択できます。
ActiveWindow.View.Type = wdPrintView
With ActiveDocument.Bookmarks("\Page").Range
.Characters(1).Select
Dim shp As Shape
For Each shp In .ShapeRange
If shp.Type = msoGroup Then
shp.Select Replace:=False
End If
Next
End With
End Sub
サンプルマクロの処理内容
メインの処理は以下の部分です。
With ActiveDocument.Bookmarks("\Page").Range Dim shp As Shape For Each shp In .ShapeRange If shp.Type = msoGroup Then shp.Select Replace:=False End If Next End With
Excel VBAの「ActiveSheet.Shapes」に相当するのが、「ActiveDocument.Bookmarks("\Page").Range.ShapeRange」です。
With ActiveDocument.Bookmarks("\Page").Range Dim shp As Shape For Each shp In .ShapeRange
「ActiveDocument.Bookmarks("\Page").Range」は拙著『Excel VBAユーザーのためのWord VBA入門(1): Document・Range・Selectionの基本編』でも解説している、アクティブページを操作する際の定番のコードです。
「ActiveDocument.Bookmarks("\Page").Range」で取得したRangeオブジェクトのShapeRangeプロパティで、アクティブページに含まれる全図形を表すShapeRangeオブジェクトが取得できます。
For Each~Nextループ内のコードは、Excel VBAと同じです。
Excelの場合と同様に、グループ化されていない図形が選択された状態で上記のマクロを実行すると、その図形も選択された状態になってしまいます。
それを回避するために、アクティブページ本文の1文字目を選択する処理を事前に行っています。
With ActiveDocument.Bookmarks("\Page").Range .Characters(1).Select
印刷プレビューモードではないときには実行時エラーになってしまうため、最初に表示モードを変更しています。
ActiveWindow.View.Type = wdPrintView
Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » Word VBAでグループ化されている図形・オブジェクトを選択する