このマクロでは、そのようなニーズにお応えします。
私はかつて、見出しマップを使って、段落番号を行き来するマクロをつくりました。
非常に使い勝手がよくて好きだったのですが、Word2007以降は見だしマップの仕組みが変更されたため、使うことができなくなってしまいました。
そこで、今回のマクロをつくりました。
▼できること
マクロを実行すると、ダイアログボックスが表示されます。
ここで、段落番号を入力します
たとえば、22段落にカーソルを移動する場合には、半角または全角で「22」を入力します。
![みんなのワードマクロ](https://stat.ameba.jp/user_images/20110905/09/gidgeerock/dd/46/p/t02200079_0478017211463690686.png?caw=800)
すると、日本語明細書または英文明細書の段落番号にカーソルが移動します。
【0022|】
【0022|】
[0022|]
上記の赤い部分のいずれかにカーソルが移動します。
同じ段落番号が1つのWord文書に記載されている場合には、文書の初めの方にある段落番号が選択されます。
▼マクロの解説
このマクロで少し工夫したところは、任意の数字を入力したときに4桁数字で検索するという点です。赤文字部分で変換しています。
なので、多くの場合、参照符号は検索対象外になります。4桁の参照符号を用いられている方の場合には、検索対象とする文字列に墨付き括弧【】やスクェアブラケット[]を含めるといいと思います。
myPara = "【" & Format(myNumber, "0000") & "】"
また、完全一致の4桁数字を探すため、特許番号や計算値など、数値の途中で出てくる4桁数字は対象外となります(青文字部分)。
さらに、全角・半角の区別をしないため、日本語明細書でも英文明細書でも両方とも使えます。これが便利です(水色部分)。
例えば、以下のような記載があった場合を考えます。
![みんなのワードマクロ](https://stat.ameba.jp/user_images/20110905/09/gidgeerock/13/fa/p/t02200253_0349040211463690685.png?caw=800)
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
▼関連記事
段落番号をフィールドで入力(日本語)
段落番号をフィールドで入力(英語)
マクロコードの登録方法
ツールバーのボタン登録