【コード】特定ページを表示させるWordマクロ

水野麻子さんの「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

トップへ戻る