水野麻子さんの「Word起動時に特定ページから開く 」からネタをいただきます。
というか、ご指名いただいた気がしたので、作ってみました。
こちら で紹介した1行マクロを利用しています。
【1行マクロ】
Selection.GoTo What:=wdGoToPage, Which:=wdGoToFirst, Count:=ページ番号
【考え方】
以前、こちらの記事 で、SlectionオブジェクトとRangeオブジェクトの話をしたことがありました。
これもどちらのオブジェクトでもかけるのですが、上記1行マクロは、Selectionオブジェクトで書いています。
Selectionオブジェクトにして、何がうれしいかというと、カーソルが動くんですね。
今回の目的は、「特定ページを表示させる」なので、「特定ページにカーソルを移動させる」、と読み替えているんです。
ここがワードマクロをやっているうちにわかってくる読み替えですね。
日英翻訳をするときに「日日翻訳」しますね。
それににています。
まず、翻訳大賞となる日本語を、同じ意味の別の日本語に言い換えてみて、言い換えた日本語から英訳をする、ということです。
水野さんは、かるくさらっと書いていますが、こんな感じに説明されています。
実は、ここが一番重要だったりします。
・起動時に特定ページから開く=起動直後に特定ページにジャンプするのと事実上同じ。
マクロを作るときに、この発想の転換が必要になります。
私たちが日常ワードを使うときにほしいなと思う動きを、ワードの具体的な操作・機能で言い換えるわけです。
こういうのは、本やヘルプで調べることを習慣化していくと、ワードの機能を理解してきて予測できるようになると思います。
今のところは気にせずに、とにかく自分流の解釈で試してみることだがいいと思います。
日日翻訳の仕方によって、いろんなマクロがかけますよ。
翻訳文にいろんな書き方があるのと同じです。
【応用技】
とりあえず、作ってみました。
あんまり新しい発想はありませんね(笑)。しかも長いし。
動き自体は、水野さんが紹介されていたページの以下の文章と同じことをします。
[Ctrl]+[G]でジャンプの画面を出し、固定ページとして指定したいページの番号を半角数字で入力します。
InputBox関数を使っていますし、エラー処理も使っています。
Wordで実践 のP.73によれば、InputBox関数に数値を入れる場合には、Variantで受けるとのことなので、冒頭で、Dim myPage as Variantと定義しています。
デフォルトとして、はじめから「5」を入力してあるのが、ちょっと気が利いている感じでおしゃれですね。
また、全角・半角数値以外の文字を入力するとミスとして以下のメッセージが表示されます。
あんまり細かく説明しませんが、なんとなくプログラムの意味を想像してみてください。
マクロ
Sub 特定ページへ飛ぶ() Dim myPage As Variant '移動先のページを入れる変数 'エラー処理の設定 On Error GoTo ErrorHandler myPage = InputBox("移動先のページを入力して下さい。", "ページの移動", 5) If myPage = vbNullString Then 'キャンセルの場合 End Else Selection.GoTo What:=wdGoToPage, Which:=wdGoToFirst, Count:=myPage End If On Error GoTo 0 Exit Sub 'エラー時の処理 ErrorHandler: If Err = 4120 Then MsgBox "ページ番号には数値を入力してください。", vbCritical, "入力ミスの警告" End If End Sub