【Word VBA】日英特許明細書の段落番号を探す

2011年9月5日

このマクロには改良版があります。
【コード】日英特許明細書の段落番号を探す(改良版) 

明細書の翻訳または作成で、特定の段落にジャンプ(カーソルを移動)したいときありますね。

このマクロでは、そのようなニーズにお応えします。

私はかつて、見出しマップを使って、段落番号を行き来するマクロをつくりました。

非常に使い勝手がよくて好きだったのですが、Word2007以降は見だしマップの仕組みが変更されたため、使うことができなくなってしまいました。

そこで、今回のマクロをつくりました。

このマクロでできること

マクロを実行すると、ダイアログボックスが表示されます。
ここで、段落番号を入力します

たとえば、22段落にカーソルを移動する場合には、半角または全角で「22」を入力します。

16-06-234

すると、日本語明細書または英文明細書の段落番号にカーソルが移動します。

【0022|
【0022|
[0022|]

上記の赤い部分のいずれかにカーソルが移動します。

同じ段落番号が1つのWord文書に記載されている場合には、文書の初めの方にある段落番号が選択されます。

マクロの解説

このマクロで少し工夫したところは、任意の数字を入力したときに4桁数字で検索するという点です。21行目で変換しています。

なので、多くの場合、参照符号は検索対象外になります。4桁の参照符号を用いられている方の場合には、検索対象とする文字列に墨付き括弧【】やスクェアブラケット[]を含めるといいと思います。

myPara = "【" & Format(myNumber, "0000") & "】"

また、完全一致の4桁数字を探すため、特許番号や計算値など、数値の途中で出てくる4桁数字は対象外となります(29行目)。

さらに、全角・半角の区別をしないため、日本語明細書でも英文明細書でも両方とも使えます。これが便利です(30行目)。

例えば、以下のような記載があった場合を考えます。

16-06-235

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

-コード
-, ,