【Word VBA】日英特許明細書の段落番号を探す(改良版)

2011年11月24日

以前ご紹介した「【コード】日英特許明細書の段落番号を探す」ですが、マクロ勉強会にご参加されている方から、改良提案をいただきました。

それをヒントにして作ったマクロです。

このマクロでできること

記事のタイトルのとおり、日英特許明細書の段落番号を探すのですが、一工夫あります。

検索した段落をページの一番上に表示するというすぐれもの!

どういうことか?というと、以下のように比較してみるとわかりやすいですね。

段落番号の【0002】を探した場合です。

画面に、【0001】から【0003】が表示された状態で【0002】を探すと、前回のバージョンでは、以下の | のように、画面の中央にカーソルが移動します。

(前回のバージョン)

16-06-232

ところが、今回のバージョンでは画面が自動でずれて、【0002】が画面の一番上に表示されます。

(今回のバージョン)

16-06-23

対象となる段落をより多く見ることができるし、スクロールする必要もなくなりますから、うれしい機能ですね。

こういうちょっとした心遣いっていいですね。

マクロの解説

段落番号を見つけた場合、そのままカーソルを移動させるのではなく、一度文書の本文の一番下までカーソルを移動させてから目的の段落番号に移動させます。

34行で、カーソルを本文の末尾にまで移動させています。

すると、画面の一番上の行に目的とする段落番号が現れます。

マクロ


Sub 段落番号へジャンプ_改良版()

 Dim myNumber As Variant '段落番号の入力
 Dim myPara As String  '4桁の段落番号
 Dim myMessage As String 'メッセージ
 Dim myTitle As String  'タイトル
 Dim myRange As Range  'Rangeオブジェクト

 myMessage = "段落番号を入力して下さい。" & vbCr _
       & "(半角・全角どちらでも可)"
 myTitle = "段落番号へジャンプ"

 Do
   myNumber = InputBox(myMessage, myTitle)
   If myNumber = vbNullString Then End
 Loop While IsNumeric(myNumber) = False Or _
       myNumber < 1 Or _
       myNumber > 9999

 myPara = Format(myNumber, "0000")
 Set myRange = ActiveDocument.Range(0, 0)

 With myRange.Find
  .Text = myPara
  .Forward = True
  .Wrap = wdFindContinue
  .Format = False
  .MatchWholeWord = True
  .MatchByte = False
  .Execute
 End With

 If myRange.Find.Found = True Then
  Selection.EndKey Unit:=wdStory
  myRange.Select
  Selection.Collapse direction:=wdCollapseEnd
 Else
   MsgBox "段落番号:" & myPara & " は見つかりませんでした。", _
   vbInformation, "検索結果のお知らせ"
 End If

End Sub

 

-コード
-, ,