Microsoft MVP for Wordの新田順也さんが、「みんなのワードマクロ」で「文書に含まれる単語を調べるマクロ_並べ替え付き(Collectionオブジェクト) 」という記事を公開してらっしゃいます。この記事のなかで、バブルソートの処理を内包したWordマクロが紹介されています。
こういった並べ替えの要望が出てくるのならば、やはり、WordではなくExcelに出力してしまうほうが、あとあと便利だと感じます。
単語をExcelに書き出すサンプルマクロ
Word文書に含まれる単語一覧をExcelに出力するマクロをご紹介しておきます。
Dim dic As Object 'Scripting.Dictionary
Dim wrd As Word.Range
Dim key As Variant
Dim xls As Object 'Excel.Application
Dim i As Long
' 連想配列に単語を登録
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
' Excelに単語を書き出し
Set xls = CreateObject("Excel.Application")
xls.Visible = True
With xls
.SheetsInNewWorkbook = 1
.Workbooks.Add
i = 1
For Each key In dic.keys
.Cells(i, 1).Value = "'" & key
i = i + 1
Next key
End With
Set xls = Nothing
Set dic = Nothing
上記のマクロを実行すると、アクティブな文書に含まれる単語が、新規Excelブックに出力されます。
サンプルマクロの解説
先日ご紹介した新規Word文書に単語を書き出すマクロとの違いは、後半の単語を書き出す部分です。
ExcelをCreateObjectしてから
Set xls = CreateObject("Excel.Application")
Excelを表示し
xls.Visible = True
シート枚数を1枚に設定してから
.SheetsInNewWorkbook = 1
ブックを作成し
.Workbooks.Add
A1セルから縦方向に単語を書き出しています。
i = 1
For Each key In dic.keys
.Cells(i, 1).Value = "'" & key
i = i + 1
Next key
セルの書式設定によって見た目が変更されてしまうとあれなので、
.Cells(i, 1).Value = "'" & key
と「'」(シングルクォート)を頭にくっつけて出力しています。
Home » Dictionaryオブジェクトの使い方 » 単語一覧をExcelに出力するWordマクロ