Home » Dictionaryオブジェクトの使い方 » 文書に含まれる単語を新規文書に書き出すWordマクロ

文書に含まれる単語を新規文書に書き出すWordマクロ

対象:Word2003, Word2007, Word2010

Wordには、文書内の単語を表すWordsコレクションオブジェクトがあります。

英語のように、単語と単語の間に必ずスペースの存在する言語の場合、単語を識別するのは、とても簡単なことです。

しかし、日本語のような、隙間なく文字が続く言語の場合、単語がどのように認識されるのか、気になります。

[スポンサードリンク]

文書に含まれる単語を新規文書に書き出すサンプルマクロ

その参考になりそうなマクロを作成したのでご紹介しておきます。

Sub 文書に含まれる単語を新規DOCに書き出す()

 Dim dic As Object
 Dim wrd As Range
 Dim key As Variant

' 連想配列に単語を登録
 On Error Resume Next
 Set dic = CreateObject("Scripting.Dictionary")
 For Each wrd In ActiveDocument.Words
  dic.Add wrd.Text, ""
 Next wrd
 On Error GoTo 0

' 新規文書に単語を書き出し
 With Application.Documents.Add
  For Each key In dic.Keys
   .Range.InsertAfter key & vbCr
  Next key
 End With

 Set dic = Nothing

End Sub

上記のマクロを実行すると、アクティブ文書に含まれる単語が、新規のWord文書に作成されます。

サンプルマクロの解説

Dictionaryオブジェクトを使って、ダブりのない連想配列に単語を格納して、それを新規文書に書き出しています。

連想配列に単語を登録している
 On Error Resume Next
 Set dic = CreateObject("Scripting.Dictionary")
 For Each wrd In ActiveDocument.Words
  dic.Add wrd.Text, ""
 Next wrd
 On Error GoTo 0
の部分については、田中亨さんのサイト・Office TANAKAの解説『重複しないリストを作る』をご覧いただくのが早いでしょう。

新規文書に書き出しをしている、
 With Application.Documents.Add
  For Each key In dic.Keys
   .Range.InsertAfter key & vbCr
  Next key
 End With
のポイントは、RangeオブジェクトのInsertAfterメソッドを使っているところでしょう。

Rangeオブジェクトに、InsertAfterメソッドが用意されているのが、WordのVBA(Visual Basic for Applications)らしいと感じます。

関連語句
使用されている単語を抽出, 単語を抜き出す

[スポンサードリンク]

Home » Dictionaryオブジェクトの使い方 » 文書に含まれる単語を新規文書に書き出すWordマクロ

「Dictionaryオブジェクトの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.