以前のWordマクロセミナーの参加者の方から、図番号を検索するマクロのご要望をいただきましたので紹介します。
図がたくさん出てくるような翻訳の場合、図の説明が記載されている個所にすぐに移動できるとうれしいですよね。
日本語版で作成しましたが、検索する文字列を工夫すれば、英語でも使えます。
▼このマクロでできること
2つマクロがあります。
マクロ1では、カーソルの位置以降にある図番号(図1、図2、図3など)を検索します。
マクロ2では、カーソルの位置の前にある図番号を検索します。
▼マクロの解説
ワイルドカードを利用して、図番号を検索します。
Rangeオブジェクトをカーソル位置で作成しています。
この場合、検索範囲がカーソル位置のストーリー
に限定されます。
本文中にカーソルがある場合には、検索の対象範囲は本文に限定されます。
テキストボックスにカーソルがある場合には、検索の対象範囲がそのテキストボックスに限定されます。
検索する文字列: 図[0-90-9]{1,}
つまり、図の直後に、半角もしくは全角の数字があると指定しています。
文書の末尾または先頭になると、「最初(又は最初)から検索をしますか?」というメッセージが表示されます。
このメッセージの表示は、
.Wrap = wdFindAsk
で設定しています。
ここを、
.Wrap = wdFindStop
とすると、文書の末尾と先頭で、検索を終了します。メッセージは表示されません。
.Wrap = wdFindContinue
とすると、文書の末尾と先頭になると自動的に文書の先頭(又は末尾)から検索を開始します。
▼マクロ1
Sub 図番号を検索_次()
Dim myRange As Range
Set myRange = Selection.Range
With myRange.Find
.Text = "図[0-90-9]{1,}"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False '大文字と小文字の区別する
.MatchWholeWord = False '完全に一致する単語だけを検索する
.MatchAllWordForms = False '英単語の異なる活用形を検索する
.MatchSoundsLike = False 'あいまい検索(英)
.MatchFuzzy = False 'あいまい検索(日)
.MatchByte = False '半角と全角を区別する
.MatchWildcards = True 'ワイルドカードを使用する
If .Execute = True Then
myRange.Select
Else
MsgBox "図番号が見つかりませんでした。"
End If
End With
Set myRange = Nothing
End Sub
▼マクロ2
Sub 図番号を検索_前()
Dim myRange As Range
Set myRange = Selection.Range
With myRange.Find
.Text = "図[0-90-9]{1,}"
.Forward = False
.Wrap = wdFindAsk
.Format = False
.MatchCase = False '大文字と小文字の区別する
.MatchWholeWord = False '完全に一致する単語だけを検索する
.MatchAllWordForms = False '英単語の異なる活用形を検索する
.MatchSoundsLike = False 'あいまい検索(英)
.MatchFuzzy = False 'あいまい検索(日)
.MatchByte = False '半角と全角を区別する
.MatchWildcards = True 'ワイルドカードを使用する
If .Execute = True Then
myRange.Select
Else
MsgBox "図番号が見つかりませんでした。"
End If
End With
Set myRange = Nothing
End Sub
▼関連記事
日英特許明細書の段落番号を探すマクロ(改良版)
ストーリー種別とは