以前ご紹介した「【コード】日英特許明細書の段落番号を探す」ですが、マクロ勉強会にご参加されている方から、改良提案をいただきました。
それをヒントにして作ったマクロです。
<目次>
このマクロでできること
記事のタイトルのとおり、日英特許明細書の段落番号を探すのですが、一工夫あります。
検索した段落をページの一番上に表示するというすぐれもの!
どういうことか?というと、以下のように比較してみるとわかりやすいですね。
段落番号の【0002】を探した場合です。
画面に、【0001】から【0003】が表示された状態で【0002】を探すと、前回のバージョンでは、以下の | のように、画面の中央にカーソルが移動します。
(前回のバージョン)
ところが、今回のバージョンでは画面が自動でずれて、【0002】が画面の一番上に表示されます。
(今回のバージョン)
対象となる段落をより多く見ることができるし、スクロールする必要もなくなりますから、うれしい機能ですね。
こういうちょっとした心遣いっていいですね。
マクロの解説
段落番号を見つけた場合、そのままカーソルを移動させるのではなく、一度文書の本文の一番下までカーソルを移動させてから目的の段落番号に移動させます。
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