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