ブログの読者の方から、文書中の特定ページの本文を選択する方法を尋ねられました。
例えば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





