このマクロには改良版があります。 【コード】日英特許明細書の段落番号を探す(改良版)
明細書の翻訳または作成で、特定の段落にジャンプ(カーソルを移動)したいときありますね。
このマクロでは、そのようなニーズにお応えします。
私はかつて、見出しマップを使って、段落番号を行き来するマクロをつくりました。
非常に使い勝手がよくて好きだったのですが、Word2007以降は見だしマップの仕組みが変更されたため、使うことができなくなってしまいました。
そこで、今回のマクロをつくりました。
<目次>
このマクロでできること
マクロを実行すると、ダイアログボックスが表示されます。
ここで、段落番号を入力します
たとえば、22段落にカーソルを移動する場合には、半角または全角で「22」を入力します。
すると、日本語明細書または英文明細書の段落番号にカーソルが移動します。
【0022|】
【0022|】
[0022|]
上記の赤い部分のいずれかにカーソルが移動します。
同じ段落番号が1つのWord文書に記載されている場合には、文書の初めの方にある段落番号が選択されます。
マクロの解説
このマクロで少し工夫したところは、任意の数字を入力したときに4桁数字で検索するという点です。21行目で変換しています。
なので、多くの場合、参照符号は検索対象外になります。4桁の参照符号を用いられている方の場合には、検索対象とする文字列に墨付き括弧【】やスクェアブラケット[]を含めるといいと思います。
myPara = "【" & Format(myNumber, "0000") & "】"
また、完全一致の4桁数字を探すため、特許番号や計算値など、数値の途中で出てくる4桁数字は対象外となります(29行目)。
さらに、全角・半角の区別をしないため、日本語明細書でも英文明細書でも両方とも使えます。これが便利です(30行目)。
例えば、以下のような記載があった場合を考えます。
1段落を検索すると、[0001|]となります。
マクロ
Sub Para_Jump() '段落番号(4桁数字)へのジャンプ Dim myNumber As Variant Dim myPara As String Dim myMessage As String Dim myTitle As String Dim myRange As 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 myRange.Select Selection.Collapse direction:=wdCollapseEnd Else MsgBox "段落番号:" & myPara & " は見つかりませんでした。", _ vbInformation, "検索結果のお知らせ" End If End Sub