Home » ワードマクロ・Word VBAの使い方 » Shape・図形 » Word VBAでグループ化されている図形・オブジェクトを選択する

Word VBAでグループ化されている図形・オブジェクトを選択する

動作検証バージョン:Windows 11 Home + 64bit Word バージョン 2411(ビルド18217.20000クイック実行)ベータチャネル

アクティブシート上のグループ化図形を選択するExcelマクロをご紹介しました。

同じロジックでWordマクロも作れます。

グループ化されている図形・オブジェクトを選択するサンプルマクロ

以下のWordマクロでアクティブページ上のグループ化されている図形を選択できます。

Sub グループ化図形を選択する()
 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でグループ化されている図形・オブジェクトを選択する

「Shape・図形」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.