【Word VBA】特定の英単語を含む文章を書き出すWordマクロ

2013年5月24日

特定の英単語を含む文章を別ファイルに書き出すマクロです。

 

英単語は、活用形に応じて表記が変化します。

例えば、driveの過去形はdrove、そして過去分詞はdriven です。

drive に関する文章をファイル中から探す場合、「検索する文字列」にこの活用形をすべて入力するのは面倒ですね。

そこで、「検索と置換」ダイアログボックスの「英単語の異なる活用形も検索」機能を用います。

この機能を使うと、英単語の動詞の活用形を考慮して検索できます。

この機能は、動詞だけではなく、形容詞の比較級や名詞の複数形の検索にも応用できます。

(Word 2010の場合)

上記の「英単語の異なる活用形も検索」チェックボックスが表示されていない場合は、別の記事「『英単語の異なる活用形も検索』機能を使う」をご覧ください。

このマクロでできること

このマクロでは、指定した単語を含む文章を別ファイルに書き出します。

上記の「英単語の異なる活用形も検索」機能を用いるので、より正確に多くの文章を書き出せます。

 

用途は、、、、学習用や参考資料として例文集をつくることを想定しています。

特定のキーワードを仕込むことができれば、便利な英語表現を集められるのではないでしょうか。

まあ、サンプルのマクロなので、あんまり深く考えずに使ってみてください(笑)。

マクロの解説

15行目と18行目のSetステートメントで、現在の文書と新規文書を定義しています。

このようなことをしておくと、後々の処理で文書を指定しやすくなるので便利です。

今回の例文では、actDocもnewDocも一回だけですね。

もっと複雑に文書間でやりとりするときに便利になります。

 

Wordの「英単語の異なる活用形も検索」機能は、40行目です。

設定はこれだけです。

マクロ


Sub 特定の英単語を含む文章を書き出す()

 Dim myRange As Range
 Dim actDoc As Document
 Dim newDoc As Document
 Dim myKW(10) As String '登録できる単語数
 Dim i As Integer

 myKW(1) = "drive"
 myKW(2) = "write"
 myKW(3) = "eat"
 myKW(4) = "abide"

 '対象となる文書(現在、カーソルが置かれている文書)
 Set actDoc = ActiveDocument
 
 '書き出す文書(新規文書を追加)
 Set newDoc = Documents.Add
 
 '本文中の文字列をオブジェクトに設定
 Set myRange = actDoc.Content

 'myKWの数だけ繰り返す(最大10回)
 For i = 1 To UBound(myKW)

  '毎回、先頭から検索開始
  myRange.SetRange Start:=0, End:=0

  With myRange.Find
   .Text = myKW(i)
   .Forward = True
   .Wrap = wdFindStop
   .Format = False
   .MatchCase = False
   .MatchWholeWord = False
   .MatchByte = False
   .MatchSoundsLike = False
   .MatchWildcards = False
   .MatchFuzzy = False
   .MatchAllWordForms = True '英単語の異なる活用形も検索
   Do While .Execute = True
    With myRange
    .Expand Unit:=wdSentence
    newDoc.Range.InsertAfter Text:=.Text & vbCr
    .Collapse direction:=wdCollapseEnd
    End With
   Loop
  End With

 Next i

 Set myRange = Nothing
 Set actDoc = Nothing
 Set newDoc = Nothing
 
End Sub

関連記事

『英単語の異なる活用形も検索』機能を使う

キーワードの含まれる文章に下線をつけるマクロ

キーワードの含まれる文章に下線をつけるマクロ(その2)

-コード
-, ,