特定の英単語を含む文章を別ファイルに書き出すマクロです。
英単語は、活用形に応じて表記が変化します。
例えば、driveの過去形はdrove、そして過去分詞はdriven です。
drive に関する文章をファイル中から探す場合、「検索する文字列」にこの活用形をすべて入力するのは面倒ですね。
そこで、「検索と置換」ダイアログボックスの「英単語の異なる活用形も検索」機能を用います。
この機能を使うと、英単語の動詞の活用形を考慮して検索できます。
この機能は、動詞だけではなく、形容詞の比較級や名詞の複数形の検索にも応用できます。
(Word 2010の場合)
上記の「英単語の異なる活用形も検索」チェックボックスが表示されていない場合は、別の記事「『英単語の異なる活用形も検索』機能を使う」をご覧ください。
<目次>
このマクロでできること
このマクロでは、指定した単語を含む文章を別ファイルに書き出します。
上記の「英単語の異なる活用形も検索」機能を用いるので、より正確に多くの文章を書き出せます。
用途は、、、、学習用や参考資料として例文集をつくることを想定しています。
特定のキーワードを仕込むことができれば、便利な英語表現を集められるのではないでしょうか。
まあ、サンプルのマクロなので、あんまり深く考えずに使ってみてください(笑)。
マクロの解説
15行目と18行目のSetステートメントで、現在の文書と新規文書を定義しています。
このようなことをしておくと、後々の処理で文書を指定しやすくなるので便利です。
今回の例文では、actDocもnewDocも一回だけですね。
もっと複雑に文書間でやりとりするときに便利になります。
Wordの「英単語の異なる活用形も検索」機能は、40行目です。
設定はこれだけです。
マクロ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | 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 |