Home » ワードマクロ・Word VBAの使い方 » セクション » VBAでセクション区切りのあるページ番号を取得する

VBAでセクション区切りのあるページ番号を取得する

対象:Word2007, Word2010, Word2013

「ms word vba sectionのあるページ番号」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

「sectionのあるページ番号」と表現されていますが、セクション区切りの存在するページ番号を取得する、VBA(Visual Basic for Applications)のコードを探している方による検索でしょう。

[スポンサードリンク]

セクション区切りを取得するサンプルマクロ

以下のようなマクロで、アクティブな文書の、セクション区切りの存在するページ番号を、イミディエイトウィンドウに出力することができます。

Sub セクション区切りのあるページ番号を出力する()
 With ActiveDocument.Sections
  Dim i As Long
  For i = 1 To .Count - 1
   Debug.Print _
    .Item(i).Range.Information(wdActiveEndPageNumber)
  Next
 End With
End Sub

サンプルマクロの解説

アクティブ文書の、全セクション数から「- 1」した回数だけループを回します。
 With ActiveDocument.Sections
  For i = 1 To .Count - 1

なぜ「- 1」としているかというと、セクション区切りのあるページを取得するのに、Informationプロパティの引数に定数・wdActiveEndPageNumberを指定する関係です。

InformationプロパティにwdActiveEndPageNumberを指定すると、指定範囲の終了位置のページ番号が取得できます。

セクションの最後のページ番号が、セクション区切りの存在しているページ番号ということができるわけです。

ただし、最後のセクションについてはセクション区切りが存在していなくても最終ページが取得されてしまいます。それを避けるためにセクションの個数回ループを回すのではなく、セクション数から「- 1」した回数だけループを回しています。

ループの中で、
   Debug.Print _
    .Item(i).Range.Information(wdActiveEndPageNumber)
と、各Sectionオブジェクトを、SectionsコレクションオブジェクトのItemメソッドを使って取得し、そのRangeプロパティでRangeオブジェクトを取得し、そのInformationプロパティを使って、セクションの最後のページ番号を取得して、Debug.Printしています。

最終更新日時:2022-09-22 15:42

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » セクション » VBAでセクション区切りのあるページ番号を取得する

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

.