Word文書に含まれる単語を書き出す系のマクロを、いくつかご紹介してきました。
- 文書に含まれる単語を新規文書に書き出すWordマクロ
- 単語一覧をExcelに出力するWordマクロ
- 単語と単語の個数一覧をExcelに出力するWordマクロ
- 単語と個数とページ番号と行番号を、Excelに書き出すWordマクロ
Excelでデータのカウントを行う方法はいくつか考えられますが、ピボットテーブルで単語数をカウントする方向で考えてみます。
全単語とページと行の一覧をExcelに出力するサンプルマクロ
まず、WordからExcelに、ピボットテーブルで集計しやすい形で、すべての単語と、ページ番号&行番号の一覧を出力するマクロをご紹介します。
Dim rng As Word.Range
Dim cnt As Long ' 単語の数
Dim wd_pgln() ' 単語, 単語の含まれるページ番号と行番号 の2次元配列
Dim i As Long
cnt = ActiveDocument.Words.Count
ReDim wd_pgln(1 To cnt, 1 To 2)
i = 1
For Each rng In ActiveDocument.Words
With rng
wd_pgln(i, 1) = "'" & Trim(.Text)
wd_pgln(i, 2) = "p." & _
.Information(wdActiveEndAdjustedPageNumber) & _
"-" & _
.Information(wdFirstCharacterLineNumber)
End With
i = i + 1
Next
With CreateObject("Excel.Application")
.Workbooks.Add
.Range(.Range("A2"), .Cells(cnt + 1, "B")).Value = wd_pgln
.Range("A1").Value = "語句"
.Range("B1").Value = "ページ・行"
.Visible = True
End With
上記のマクロを実行するとA2セルから下に単語がだらだらと、B2セルから下にその単語が何ページ目の何行目にあるのかが「p.1-1」というフォーマットで書き出されます。
サンプルマクロの解説
今回のマクロでは、二次元配列にデータを格納しておいて、一気にExcelに書き出しを行っています。
まず、アクティブな文書に含まれる単語の個数を取得して
cnt = ActiveDocument.words.Count
二次元配列のサイズ決定します。
ReDim wd_pgln(1 To cnt, 1 To 2)
サイズを決定した二次元配列に、単語と、ページ番号&行番号を、順番に格納していきます。
i = 1
For Each rng In ActiveDocument.Words
単語は前後のスペースをTrimして、頭に「'」(シングルクォート)を付加して、二次元配列の1列目に格納し
wd_pgln(i, 1) = "'" & Trim(.Text)
ページ番号&行番号は、「p.1-1」というフォーマットにして、二次元配列の2列目に格納していきます。
wd_pgln(i, 2) = "p." & _
.Information(wdActiveEndAdjustedPageNumber) & _
"-" & _
.Information(wdFirstCharacterLineNumber)
ここでは、二次元配列にデータを格納しておいて一気に書き出す処理をわかりやすくするため、このあとのピボットテーブルを作成する処理を楽にするため、「p.1-1」という文字列を作る仕様にしています。例えば、どの単語がどのページにたくさん出現するのか、といった集計も必要ならば、ページ番号と行番号を別フィールドに出力する形にしていただくといいでしょう。
配列への格納が終わったらExcelをCreateObjectして
With CreateObject("Excel.Application")
ブックを追加し
.Workbooks.Add
データを格納した二次元配列から、データを一気に書き出します。
.Range(.Range("A2"), .Cells(cnt + 1, "B")).Value = wd_pgln
データの書き出しが終わったら、見出しを書き出して
.Range("A1").Value = "語句"
.Range("B1").Value = "ページ・行"
Excelを表示しています。
.Visible = True
今回は、単語とページ番号&行番号の一覧をExcelに出力する部分までで、このあとこの一覧データを元に、ピボットテーブルを作成するマクロを別記事でご紹介していきます。(単語一覧とピボットテーブルを作成するWordマクロを公開しました。2012-08-27)
- Newer:ピボットテーブルをマクロで作成する
- Older:モジュール名を変更するショートカットキー-F4
Home » ワードマクロ・Word VBAの使い方 » Office連携 » 全単語とページと行の一覧をExcelに出力するWordマクロ