Word VBAのGoToメソッドで見出し単位のカーソル移動をする方法


goto

photo credit: WRI Brasil Cidades Sustentáveis Belo Horizonte – Mobilidade Urbana e sistema BRT MOVE via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Word VBAで便利なカーソル移動のショートカットーを作る方法をお伝えしています。

前回はコチラの記事。

Word VBAで句読点単位のカーソル移動をショートカットキー化する方法
Word VBAで便利なカーソル移動のショートカットキーを作る方法です。今回は、If~Then文やMoveUntilメソッドを駆使しつつ、句読点単位のカーソル移動をショートカットキー化していきます。

句読点単位のカーソル移動をショートカットキー化しました。

今回は別のカーソル移動を目指します。ねらい目は「ページ単位」と「文書の先頭・末尾」との間、つまり「見出し単位」です。

ナビゲーションウィンドウを出して見出しをクリックすれば、見出し単位で移動ができるんですが、もっとすぐにサクサク行きたいんですよ。わかりますか?

ということで、Word VBAで見出し単位のカーソル移動をする方法です。

ちなみに、Wordのデフォルトは以下記事にまとめている通りですので、ここで再度チェックしておきましょう。

Word VBAでカーソル移動をする基本中の基本!Moveメソッドの使い方
カーソル移動は全く生産性がないくせに、うっかりしていると何気に手間がかかってしまいます。まず今回は、Word VBAのカーソル移動の基本中の基本、Moveメソッドの使い方についてお伝えします。
スポンサーリンク

GoToメソッドで見出し単位の移動をする

カーソル移動というとMoveメソッドなのですが、指定できる単位に「見出し」というのはないんですね。

そこで、別のメソッドを紹介します。カーソル移動をするGoToメソッドです。

書式はコチラです。

Selection.GoTo What, Which, Count

Whatは移動先の項目で、以下WdGoToItem列挙型の定数のいずれかを指定します。

定数 移動先
wdGoToLine
wdGoToHeading 見出し
wdGoToPage ページ
wdGoToSection セクション
wdGoToTable
wdGoToObject オブジェクト
wdGoToBookmark ブックマーク
wdGoToComment コメント
wdGoToEndnote 文末脚注
wdGoToFootnote 脚注
wdGoToGrammaticalError 文法エラー
wdGoToProofreadingError 校正エラー
wdGoToSpellingError スペルエラー

MoveメソッドのWdUnitsは単語、文、行、段落など定番項目が多かったのですが、GoToメソッドのWdGoToItemは痒いところに手が届く系のラインナップですね。

Whichは移動方法について指定します。指定は以下WdGoToDirection列挙型の定数から選択します。

定数 移動方法
wdGoToAbsolute 絶対位置
wdGoToFirst 最初の要素
wdGoToLast 最後の要素
wdGoToNext 次の要素
wdGoToPrevious 前の要素

Countは番号または移動数を正の整数で指定しますが、省略可能で既定値は1です。Whichによってその役割が変わるものです。

Gotoメソッドの使用例

以下にいくつかの例を示しておきます。

Selection.GoTo wdGoToHeading, wdGoToFirst '最初の見出し
Selection.GoTo wdGoToLine, wdGoToAbsolute, 4 '文書の4行目
Selection.GoTo wdGoToLine, wdGoToPrevious, 2 '現在の位置から2行前
Selection.GoTo wdGoToTable, wdGoToNext '次のテーブル

Gotoメソッドでは、このようにかなり詳細なカーソル移動を実現できます。

Gotoメソッドで一つ前の見出し、一つ次の見出しに移動する

Gotoメソッドを使って、現在のカーソル位置から一つ次の見出しに移動するには

Selection.GoTo wdGoToHeading, wdGoToNext

また、同様に一つ前の見出しに移動するには

Selection.GoTo wdGoToHeading, wdGoToPrevious

とします。

それぞれイミディエイトウィンドウで入力して試してみてください。ちゃんと前後の見出しに移動しますよ。

ただし、GoToメソッドには一点、悩ましい点があります。

Whatの指定時に入力補完が効かないのです。列挙型の定数の種類がとてもたくさんあるのに…これでは不便です。

GoToNextメソッドで次の見出しに移動する

そんなときのために、実は別のメソッドを使うこともできます。

まずは、次の要素に移動するGoToNextメソッドを紹介しましょう。以下のように記述します。

Selection.GoToNext What

Whatには前述のGoToメソッドと同様、WdGoToItem列挙型の定数のいずれかを指定します。

WhichとCountの指定はありません、なぜならGoToNextメソッドを使う場合は一つ次の要素に移動する、ということが決まっているからです。

では、以下一つ次の見出しへカーソル移動するプロシージャを作ってみましょう。

Sub gotoForward()

Selection.GoToNext wdGoToHeading

End Sub

連続して実行すると以下のように見出しから見出しに移動してくれます。

Word VBAのGoToNextメソッドで次の見出しにカーソル移動

GoToPreviousメソッドで次の見出しに移動する

同様に、前の要素に移動するGoToPreviousメソッドがあります。

使い方はGoToNextメソッドと同様に、WdGoToItem列挙型の定数のいずれかを指定するWhatを用いて以下のように記述します。

Selection.GoToPrevious What

GoToPreviousメソッドを使って、一つ次の見出しへカーソル移動するプロシージャを作ります。

Sub gotoBackward()

Selection.GoToPrevious wdGoToHeading

End Sub

こちらのプロシージャを連続して実行すると、見出しをポンポンと前に移動していきます。

Word VBAのGoToPreviousメソッドで前の見出しにカーソル移動

まとめ

Word VBAで見出し単位でカーソル移動をする方法についてお伝えしました。

GoToメソッドを使うと、様々な項目に対して色々な移動の仕方を一つのメソッドで実現できるのですが、残念ながら入力補完が効かないという弱点があります。

その点、一つ前の要素や一つ次の要素と決まっているのであれば、GoToNextメソッドとGoToPreviousメソッドが入力補完も使えておすすめです。

なお、今回紹介したしたGoTo系メソッドはいずれも、Selectionが範囲選択であった場合には、範囲選択が解除された上でカーソル移動をします。これは、Move系のメソッドと同じですね。

さて、これで完成としても良いのですが、せっかくなので文書の末尾や先頭に到達したときの処理を追加しつつ、ショートカットキー化していきましょう。

Word VBAで見出し単位のカーソル移動をショートカットキー化する方法
Word VBAで便利なカーソル移動のショートカットキーを作成する方法をお伝えしています。文書の先頭または末尾に移動しきったときの挙動を追加しつつ、見出し単位のカーソル移動をショートカットキー化していきます。

どうぞお楽しみに!

連載目次:Word VBAでカーソル移動の便利ショートカットキーを作る

Wordには便利なカーソル移動に関するショートカットキーがデフォルトでたくさん用意されていますが、マクロを使えば好みのカーソル移動に関するショートカットキーを自作することができます!本シリーズでは、その作り方を丁寧に解説していきます。
  1. Word VBAでカーソル移動をする基本中の基本!Moveメソッドの使い方
  2. Word VBAでMoveUntilメソッドを使って句読点単位でカーソル移動をする方法
  3. Word VBAで句読点単位のカーソル移動のショートカットキー化する方法
  4. Word VBAのGoToメソッドで見出し単位のカーソル移動をする方法
  5. Word VBAで見出し単位のカーソル移動をショートカットキー化する方法

タイトルとURLをコピーしました