日英特許明細書の段落番号を探すマクロ(改良版) | みんなのワードマクロ

みんなのワードマクロ

ワードマクロで、文書作成とオフィス事務を効率化!!

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

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


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

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

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

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

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


(前回のバージョン)
みんなのワードマクロ


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


(今回のバージョン)
みんなのワードマクロ


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

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


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

青文字部分で、カーソルを本文の末尾にまで移動させています。

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


▼マクロ
Sub 段落番号へジャンプ_改良版()
 '段落番号(4桁数字)へのジャンプ
 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


▼関連記事
日英特許明細書の段落番号を探すマクロ

段落番号をフィールドで入力(日本語)

段落番号をフィールドで入力(英語)

マクロコードの登録方法

ツールバーのボタン登録