【Word VBA】半角括弧を全角括弧にするWordマクロ

2014年4月18日

先日のWordマクロセミナーの受講生からの要望で作成してみました。

半角の丸括弧を全角の丸括弧に置換します。

置換するだけのマクロはマクロの記録で簡単にできますのでチャレンジしてみてください。

実務上は、少し工夫すると使い勝手がよくなりますので、その工夫の方法も示しました。

このマクロでできること

本文中の半角括弧を全角括弧に置換します。

マクロ1では、検索する文字列について半角と全角の区別をして置換します。

マクロ2では、マクロ1の機能に加え、置換した個所を灰色50%の蛍光ペンでマーキングします。

こうすると、置換個所を目視確認できて便利です。

特に一括置換する場合には、蛍光ペンでマーキングするのがいいと思います。

マクロ1の解説

元となるコードは、マクロの記録で取得できます。

開始の括弧と閉じ括弧を順番に置換しています。

マクロ1は半角と全角を区別をして置換しています(14行目、31行目)。

検索する文字列と置換後の文字列を変更すれば、様々な括弧のパターンに対応できます。

マクロ1


Sub 半角括弧を全角括弧に置換する1()
 
 '開始括弧の置換
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 With Selection.Find
  .Text = "(" '検索する文字列
  .Replacement.Text = "(" '置換後の文字列
  .Forward = True
  .Wrap = wdFindContinue
  .Format = False
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = True '半角と全角の区別をオン
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchWildcards = False
  .MatchFuzzy = False
 End With
 Selection.Find.Execute Replace:=wdReplaceAll

 '閉じ括弧の置換
 With Selection.Find
  .Text = ")" '検索する文字列
  .Replacement.Text = ")" '置換後の文字列
  .Forward = True
  .Wrap = wdFindContinue
  .Format = False
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = True '半角と全角の区別をオン
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchWildcards = False
  .MatchFuzzy = False
 End With
 Selection.Find.Execute Replace:=wdReplaceAll

End Sub

マクロ2の解説

マクロ1を改造してもう少し実務で使い勝手をよくしています。

複数の置換を連続して実施する場合に、置換の経過が見えるために画面がちらつくことがあります。

そのような事態をさけるために、画面の更新をオフにすることをお勧めします(6行目、73行目)。

置換後の文字列に蛍光ペンを使っています。灰色50%にしています(12行目)。

「検索と置換」ダイアログボックスでは、蛍光ペンの色を設定できないため、Wordのホームタブにある蛍光ペンの色のプルダウンを変更することで置換後の文字列の色を設定します。

ただ、この場合、マクロを実行するたびに、普段使っている「黄色」や「明るい緑」から「灰色50%」に変わっていまうので不便です。

マクロの実行後は元の選択されていた色に戻るような仕組みになっています(9行目、70行目)。

また、検索と置換ダイアログの設定の解除もしています(53行目~67行目)。この部分があると、置換後の文字列の蛍光ペンの設定や半角全角の区別など、「検索と置換」ダイアログボックスの設定を解除できるので便利です。

 

以下、マクロを実行した後の「検索と置換」ダイアログボックスの比較です。

2つのケースを比較すると、53行目~67行目の役割が理解できます。

(1)赤文字部分がないケース

設定が残っています。

(2)赤文字部分があるケース

設定も検索する文字列も置換後の文字列も何も残っていません。

マクロ2


Sub 半角括弧を全角括弧に置換する2()
 
 Dim myHighLight As String '蛍光ペンの色を保存する変数
 
 '画面の更新をオフ
 Application.ScreenUpdating = False
 
 '現在選択されている蛍光ペンの色の保存
 myHighLight = Options.DefaultHighlightColorIndex
  
 '蛍光ペンの色をGray50に設定
 Options.DefaultHighlightColorIndex = wdGray50
 
 '開始括弧の置換
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 With Selection.Find
  .Text = "(" '検索する文字列
  .Replacement.Text = "(" '置換後の文字列
  .Replacement.Highlight = True '置換後の文字列の蛍光ペンオン
  .Forward = True
  .Wrap = wdFindContinue
  .Format = True 'フォーマットをオン
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = True
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchWildcards = False
  .MatchFuzzy = False
 End With
 Selection.Find.Execute Replace:=wdReplaceAll

 '閉じ括弧の置換
 With Selection.Find
  .Text = ")" '検索する文字列
  .Replacement.Text = ")" '置換後の文字列
  .Replacement.Highlight = True '置換後の文字列の蛍光ペンオン
  .Forward = True
  .Wrap = wdFindContinue
  .Format = True 'フォーマットをオン
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = True
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchWildcards = False
  .MatchFuzzy = False
 End With
 Selection.Find.Execute Replace:=wdReplaceAll

 '検索と置換ダイアログの設定の解除
 With Selection.Find
  .Text = "" '検索する文字列を削除
  .Replacement.Text = "" '置換後の文字列を削除
  .Replacement.Highlight = False '置換後の文字列の蛍光ペンオフ
  .Forward = True
  .Wrap = wdFindContinue
  .Format = False 'フォーマットをオフ
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False '半角と全角の区別をオフ
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchWildcards = False
  .MatchFuzzy = False
 End With
 
 '蛍光ペンの色を最初に選択されていた色に戻す
 Options.DefaultHighlightColorIndex = myHighLight

 '画面の更新をオン
 Application.ScreenUpdating = True

End Sub

連続して置換をする場合

このマクロを何個も繰り返せば、様々な文字列を一括置換できます。

それでもさらに多くの文字列の置換をする場合(例えば、数千や数万ペア)には、一括置換の支援ソフト「ぱらぱら」をご利用いただくのが便利だと思います。

テキストファイルやWordファイルに記載した文字列を連続で置換します。

お試しください。

関連記事

Wordマクロセミナー開催報告

一括置換の支援ソフト「ぱらぱら」

-コード
-,