隅付き括弧と角括弧を入れ替えたいときに

たまに、段落番号の表示等で使う墨付き括弧’【】’を角括弧’[]’に変更するとき、または、その逆に変更するときがあります。

そのようなとき、簡単に括弧の種類を変更できるマクロを作成しました。

Sub 括弧の種類を変えます()
Dim cur As Range
Dim objRng As Range
Set cur = Selection.Range
Set objRng = Selection.Range

'選択範囲がないとき全文を置換範囲にします
If cur.Start = cur.End Then
    objRng.Start = 0
    objRng.End = ActiveDocument.Bookmarks("\EndOfDoc").End
End If

If 語句あるかB("【", objRng) = True Or 語句あるかB("】", objRng) = True Then
    Call 範囲を指定して置き換えるB("【", "[", objRng)
    Call 範囲を指定して置き換えるB("】", "]", objRng)
Else
    Call 範囲を指定して置き換えるB("[", "【", objRng)
    Call 範囲を指定して置き換えるB("]", "】", objRng)
End If
cur.Select
Set objRng = Nothing
Set cur = Nothing
End Sub

Function 語句あるかB(ByRef 検索文字 As String, ByRef rng As Range) As Boolean
If Not rng Is Nothing Then rng.Select
With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = 検索文字
    .Format = False
    .Forward = True
    .Wrap = wdFindStop
    .MatchFuzzy = False
    .MatchWildcards = False
    語句あるかB = .Execute
    
    .Text = ""
End With
End Function

Sub 範囲を指定して置き換えるB(ByRef 置換前 As String, ByRef 置換後 As String, ByRef rng As Range)
With rng.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = 置換前
    .Replacement.Text = 置換後
    .Format = False
    .Forward = True
    .Wrap = wdFindStop
    .MatchWildcards = False
    .MatchFuzzy = True
    .Execute Replace:=wdReplaceAll
    
    .Text = ""
    .Replacement.Text = ""
    .MatchFuzzy = False
End With
End Sub

上記のマクロでは、【】 があるとき、【】→[]に置換します。また、【】がないとき、[]→ 【】に置換します。

範囲の選択があるとき、選択範囲が置換対象です。範囲の選択がないとき、全文が置換対象となります。

(参考)

キーワードをテレコにしたいときに