Home » Dictionaryオブジェクトの使い方 » 単語一覧をExcelに出力するWordマクロ

対象:Word2003, Word2007, Word2010

Microsoft MVP for Wordの新田順也さんが、「みんなのワードマクロ」で「文書に含まれる単語を調べるマクロ_並べ替え付き(Collectionオブジェクト) 」という記事を公開してらっしゃいます。この記事のなかで、バブルソートの処理を内包したWordマクロが紹介されています。

こういった並べ替えの要望が出てくるのならば、やはり、WordではなくExcelに出力してしまうほうが、あとあと便利だと感じます。

[スポンサードリンク]

単語をExcelに書き出すサンプルマクロ

Word文書に含まれる単語一覧をExcelに出力するマクロをご紹介しておきます。

Sub 文書に含まれる単語を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

End Sub

上記のマクロを実行すると、アクティブな文書に含まれる単語が、新規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
と「'」(シングルクォート)を頭にくっつけて出力しています。

関連語句
使用されている単語を抽出, 単語を抜き出す, VBA, Visual Basic for Applications

[スポンサードリンク]

Home » Dictionaryオブジェクトの使い方 » 単語一覧をExcelに出力するWordマクロ

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

検索


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

.