皆さん、自分の文章内で文字列を検索する場合は、どのようにしていますか?
Ctrl + F で検索ウィンドウを表示して、文字を入力するのが普通ですよね。
もちろんこの方法でもいいのですが、選択した文字を検索したい場合がよくあります。
このとき、わざわざ検索ウィンドウを表示するのが面倒で、サクサク検索したい!
そんなときに登場するのが↓のマクロです!
ワードでテキストを選択した状態で、↓のマクロを実行すると、選択している文字列が検索されます。
これをショートカットキーに登録しておくと、便利です!
Sub 選択した文字列を検索移動()
‘
‘ 選択した文字列を検索する
‘
置換ボックス初期化
‘ 選択したテキストがない場合に終了
If Selection.Type = wdSelectionIP Then
MsgBox Prompt:=”テキストが選択されていません。終了します。”
Exit Sub
End If
‘ 本文
Selection.Copy
Selection.Find.ClearFormatting
With Selection.Find
.Text = Selection.Text
.Replacement.Text = “^c”
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute
End Sub
↑のマクロでは、置換ボックス初期化 という日本語が書いてあります。
これは、↓のマクロのことで、検索マクロを使うときは、一度、検索置換ボックスを初期化して方が動作が安定するので、そのようにしています。
なので、↓のマクロコードを、おなじモジュール内に書き込んでおいてください。
そうすると、「置換ボックス初期化」と書いておくだけで↓のマクロが実行されて、検索置換ボックスが初期化されるので、コードが短くなり、便利です。
Sub 置換ボックス初期化()
‘
‘ 検索置換ボックスを初期化する
‘
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = “”
.Replacement.Text = “”
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
End Sub
さらに、コピーしたテキストを検索したい場合は、↓のマクロが有効です!
たとえば、ブラウザ(ネット)で「マクロ」という文章をコピーして、ワード文書内で「マクロ」という単語を検索したい場合、↓のマクロを実行することで検索できます。
短い単語ならいいですが、「クリップボードの文字列を検索移動」なんていうのを長い文章などを検索したい場合、単にコピーしておくだけでいいので、すごい楽です。
Sub クリップボードの文字列を検索移動()
‘
‘ コピーした文字列を検索する
‘
Dim MyData As DataObject
Dim i As String
On Error GoTo ErrorHandler
置換ボックス初期化
i = ClipBoard_GetData
Selection.Find.ClearFormatting
With Selection.Find
.Text = i
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute
Exit Sub
ErrorHandler:
MsgBox “エラーが発生したので終了します。”
End
End Sub
どうでしょうか??
マクロコードをワードのどこに記載するなどは、すっ飛ばしてコードだけアップしてます。
説明不足なのは認識していますが、他のサイトに詳細な記載があるので、割愛しています。
リンク集にある「みんなのワードマクロ」などがとても参考になるので、そちらをぜひ参照してください。
みんなのワードマクロ → Wordマクロの登録方法、実行方法

