【Word VBA】ですます調をである調に一括で変換する方法!

Wordで「ですます調」から「である調」に変換したいときはないでしょうか。

例えば議事録などで「ですます調」と「である調」が混合され、「である調」に統一したいときなどです。

そんなときに悩ませることは、

・Wordで「ですます調」から「である調」に変換する方法がわからない。
・Wordで「ですます調」から「である調」に変換することを手作業でなく一括で処理したいが方法がわからない。

ですね。

特に「である調」に統一したい文章が大量にあったり、複数のドキュメントだった場合はうんざりしますよね。

今回はそんなお悩みを解決する、
Word VBAを使い、Wordドキュメント内の「ですます調」から「である調」に一括で変換する方法
についてまとめます。

タカヒロ
タカヒロ
久しぶりのWord VBAネタです。音声変換した議事録の文字校正で使って便利だったので記事投入します。




Word VBAで「ですます調」から「である調」へ一括変換するイメージ

「である調」へ一括変換する「ですます調」の文章が記載されたWordドキュメントを用意します。

こんな感じです。

「ですます調」と「である調」のパターンが記載されているCSVファイルを用意します。

CSVファイルを設定したVBAをWordへ実装します。

VBAは前回の記事、
【Word VBA】複数の文字を一括・連続置換する
をベースに、CSVのみ入れ替えています。

VBAを実行すると、

「ですます調」から「である調」へ一括変換されます。

カンタンですね。

早速使ってみましょう。

 



サンプルのWordドキュメントを準備する

「である調」へ一括変換する「ですます調」の文章が記載されたWordドキュメントを用意しましょう。

タカヒロ
タカヒロ
「ですます調」であれば内容はなんでもよいです。

できたら、任意の場所へ保存します。



「ですます調」と「である調」のパターンが記載されているCSVファイルを用意する

こちらの内容をコピーして、文字コードをShift-JISにしたCSV形式で保存します。

しましょう。,しよう。
きましょう。,こう。
りましょう。,ろう。
できました。,できた。
できます。,できる。
あります。,ある。
なります。,なる。
きました。,くる。
ませんが,ないが
でしょう。,だろう。
りません。,らない。
みました。,みた。
ましょう。,よう。
でした。,だった。
ですが,だが
います。,いる。
がります。,がる。
ないです。,ない。
無いです。,無い。
れます。,れる。
きます。,くる。
します。,する。
ません。,ない。
ていた。,いた。
ました。,た。
ります。,る。
ます。,る。
です。,だ。
します。,する。
です。,である。
おります。,いる。
いきます。,いく。
参ります。,いく。
となります。,なる。
なります。,なる
ください。,ほしい。
ないである。,ない。
ございる。,ある。
ないである。,ない。
でした。,であった。
おりません。,ない。
しました。,した。
たである。,た。
なってう。,なっている。
してください。,してほしい。
るんだ。,る。
りた。,った。

タカヒロ
タカヒロ
変換パターンはエク短オリジナルとなり、本来複雑な処理をしなければならない日本語変換処理を簡略化したものです。誤変換される場合もありますのでその時にはCSVファイルの変換パターンを変更してください。



VBAを実装する

続いてWordのVisual Basic EditorVBAを実装します。

今回のVBAは「ですます調」と「である調」のパターンが記載されているCSVファイルを読み込み、そのリスト分置換処理を繰り返すというものになります。

実装にあたり、変更頂きたい箇所は以下です。

・置換リストファイルを指定する
置換リストを格納したパスに書き換えをお願いします。
csvFilePass = “C:\Users\****\Documents\****\である変換.csv

VBAソースコードは以下の通りです。

Sub 複数の文字列を置換()

Dim csvFilePass
Dim strBuf As String
Dim tmp As Variant

'置換リストファイルを指定します。
csvFilePass = "C:\Users\****\Documents\****\である変換.csv"

Open csvFilePass For Input As #1

'CSV内の行数分置換処理を繰り返します。

Do Until EOF(1)
    
    '1行分のデータを読み込みます。
    Line Input #1, strBuf
    
    '文字列を","で分割します。
    tmp = Split(strBuf, ",")

    '検索・置換の設定をおこないます。
    With Selection.Find
    
        .ClearFormatting '検索条件から書式を削除します。
        .Replacement.ClearFormatting '置換対象の書式を削除します。
        
        .Text = tmp(0) '検索ワードを代入します。
        .Replacement.Text = tmp(1) '置換ワードを代入します。
        
        .Forward = True  '文書に対して末尾の方向(順方向)に検索します。
        .Wrap = wdFindContinue  '先頭(または末尾)に戻って検索をします。
        
        .Format = False  'フォーマット変更を有効する(True)、有効にしない(False)を設定します。
        .MatchCase = True  '英語の大文字と小文字の区別する(True)、区別しない(False)を設定します。
        .MatchWholeWord = False '単語全体を検索対象としない設定にします。
        .MatchByte = False '半角と全角を区別する(True)、区別しない(False)を設定します。
        .MatchAllWordForms = False '英単語の異なる活用形検索を有効する(True)、有効にしない(False)を設定します。
        .MatchWildcards = False 'ワイルドカード(?*など任意の文字)を使った検索を有効する(True)、有効にしない(False)を設定します。
        .MatchSoundsLike = False '誤った置換を防止するため、英語のあいまいな検索はOFFにします。
        .MatchFuzzy = False '誤った置換を防止するため、日本語のあいまいな検索はOFFにします。

    End With
    
    '置換を実行(全て置換)します。
    Selection.Find.Execute Replace:=wdReplaceAll
    
Loop
Close #1

MsgBox "置換が完了しました。"

End Sub

実装手順は以下の通りです。

①Wordを新規に開き、「開発」タブをクリックし、

VisualBasic」をクリックします。

もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインの「Nomal」を右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。



VBAを実行する

早速VBAの実行をしてみましょう。

①「開発」タブの「マクロ」をクリックし「複数の文字列を置換」を選択し、「実行」をクリックします。

②「「である調」への置換が完了しました。」が表示されたら、
置換されていることを確認します。

変更前

変更後

はい!
置換されていますね!

VBAの説明

置換リストCSVファイルを開きます。

Open csvFilePass For Input As #1

CSV内の行数分置換処理を繰り返します。

Do Until EOF(1)

1行分のデータを読み込みstrBufへ格納します。

Line Input #1, strBuf

文字列を”,”で分割し配列tmpへ格納します。

tmp = Split(strBuf, “,”)

検索時に指定した文字列から文字列および段落の書式を削除します。

.ClearFormatting
.Replacement.ClearFormatting

検索・置換の設定をおこないます。

With Selection.Find
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = True
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchFuzzy = False

Findメソッドのプロパティ設定値の詳細は以下の通りです。

プロパティ 説明
Forward (True)指定で文書に対して末尾の方向(順方向)に検索します。(False)で逆順です。
Wrap 「wdFindContinue」先頭(または末尾)に戻って検索をします。「wdFindAsk」で戻って検索をします。
Format フォーマット変更を有効する(True)、有効にしない(False)を設定します。
MatchCase 英語の大文字と小文字の区別する(True)、区別しない(False)を設定します。
MatchWholeWord 単語全体を検索対象とする(True)、しない(False)を設定します。
MatchByte 半角と全角を区別する(True)、区別しない(False)を設定します。
MatchAllWordForms 英単語の異なる活用形検索を有効する(True)、有効にしない(False)を設定します。
MatchWildcards ワイルドカード(?*など任意の文字)を使った検索を有効する(True)、有効にしない(False)を設定します。
MatchSoundsLike 英語のあいまい検索を有効する(True)、有効にしない(False)を設定します。誤った置換を防止するため、英語のあいまいな検索はOFFにします。
MatchFuzzy 日本語のあいまい検索を有効する(True)、有効にしない(False)を設定します。誤った置換を防止するため、日本語のあいまいな検索はOFFにします

 

置換を全て置換で実行します。

Selection.Find.Execute Replace:=wdReplaceAll

なお、定数の種類は以下の通りです。

定数 置換の方法
wdReplaceNone 置換しない(既定値)
wdReplaceOne 1つだけ置換
wdReplaceAll 全て置換

 

 



さいごに

いかがでしょうか。

今回は、
Word VBAを使い、Wordドキュメント内の「ですます調」から「である調」に一括で変換する方法
についてまとめました。

今回のVBAと置換リストをうまく活用すれば、短期間で処理ができるので、ぜひ活用いただければと思います。

タカヒロ
タカヒロ
である調変換CSVの内容について訂正した方や他にアイデアある方は下のコメント欄で教えてもらえると幸いです。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です