【Word VBA】特定ページの本文を選択するWordマクロ

2012年11月20日

ブログの読者の方から、文書中の特定ページの本文を選択する方法を尋ねられました。

例えば300ページのWord文書があります。

この中の特定ページ(例えば、220ページ目から255ページ目)だけを削除する、文字の色を変えるなどの処理が必要なときがあるそうです。

この場合、220ページ目までカーソルを移動させるのは簡単ですね。

[Ctrl] + [G] でダイアログボックスを表示させて、220と入力すれば220ページの先頭に移動できます。

ただ、 ここから255ページ目の末尾まで選択範囲を拡大するのが少し難しいのです。

そこで、今回のマクロを作りました。

このマクロでできること

マクロを実行すると、開始ページと最終ページを入力するダイアログボックスが表示されます。

開始ページと最終ページの番号を入力すると、そのページの本文中の文字列が選択されます。

表示を印刷レイアウトモードに変更します。

実際に選択されたものが意図していたページであることをご確認ください。

マクロの解説

IsNumeric 関数(14行目)を用いて、入力した文字列が数字であることを確認しています。

GoTo メソッド(35行目、41行目)を用いて、カーソルを移動しています。

マクロ


Sub 特定ページの選択()

 Dim myStartP As Variant
 Dim myEndP As Variant
 Dim myEnd As Long
 Dim myTitle As String

 myTitle = "ページ選択マクロ"

 '開始ページの入力
 Do
  myStartP = InputBox("開始ページを入力", myTitle)
  If myStartP = vbNullString Then Exit Sub
 Loop While IsNumeric(myStartP) = False
 
 '終了ページの入力
 Do
  myEndP = InputBox("最終ページを入力", myTitle)
  If myEndP = vbNullString Then Exit Sub
 Loop While IsNumeric(myEndP) = False
 
 '終了ページが開始ページより小さい場合は終了します。
 If CInt(myEndP) < CInt(myStartP) Then
  MsgBox "入力に間違いがあります。終了します。", vbInformation
  Exit Sub
 End If
 
 'カーソルを本文の文頭に移動します。
 ActiveDocument.Range(0, 0).Select
 
 '印刷レイアウト表示に変更します。
 ActiveWindow.View.Type = wdPrintView
 
 '最終のページの末尾の文字位置を取得します。
 Selection.GoTo What:=wdGoToPage, _
         Which:=wdGoToAbsolute, _
         Count:=myEndP + 1
 myEnd = Selection.End - 1

 '開始ページの先頭にカーソルを移動します。
 Selection.GoTo What:=wdGoToPage, _
         Which:=wdGoToAbsolute, _
         Count:=myStartP
 
 '選択範囲の末尾を最終ページまで移動します。
 Selection.End = myEnd
 
End Sub

関連記事

Word文書中の表を探す方法

-コード
-,