「ワード vba ページ全体選択」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがあります。
いずれかのページ全体を選択する、Word VBA(Visual Basic for Applications)のコードを探している方による検索でしょうか。
任意のページ全体を選択するサンプルマクロ
以下のようなマクロで、アクティブな文書の1ページ目全体を選択することができます。
With ActiveWindow
.View.Type = wdPrintView
.ActivePane.Pages(1).Rectangles(1).Range.Select
End With
上記のマクロの、
.ActivePane.Pages(1).Rectangles(1).Range.Select
の部分を、
.ActivePane.Pages(2).Rectangles(1).Range.Select
とすれば、2ページ目が選択されます。
サンプルマクロのオブジェクト式について
Windowオブジェクトの子オブジェクトであるPaneオブジェクトからページを表すPageオブジェクトを取得する部分と、PageオブジェクトのRectanglesコレクションから本文部分を取得する部分が、ポイントです。
Wordのページは、単なる見た目にすぎないためです。ですから、
.View.Type = wdPrintView
と、まず表示状態を印刷レイアウトモードにする必要があります。
そのうえで、
.ActivePane.Pages(1).Rectangles(1).Range.Select
Pageオブジェクトの、Rectangleオブジェクトの、Rangeプロパティでページ全体を表すRangeオブジェクトを取得して、選択を行っています。
ページ全体を順番に選択するサンプルマクロ
以下のようなマクロにすれば、アクティブな文書の全ページを、順番に選択することもできます。
Dim pg As Page
With ActiveWindow
.View.Type = wdPrintView
For Each pg In .ActivePane.Pages
pg.Rectangles(1).Range.Select
MsgBox Selection.Text
Next pg
End With
上記のマクロを実行するとアクティブ文書内のページが、1ページずつ順番に選択され、そのページ本文の文字列がメッセージボックスに表示されます。
上記のマクロはWord 2016では、Rectangleオブジェクトの扱いが変わってしまっているようで、上手く動作しないこともあるようです。(Word 2016のバグではないかと思っていますが...)
Home » ワードマクロ・Word VBAの使い方 » Selection » VBAでWord文書のページ全体を取得・選択する