Word文書に含まれる単語とページ番号&行番号の一覧をExcelに出力するWordマクロと、その一覧を元にピボットテーブルを作成するExcelマクロをご紹介しました。
二つのマクロを一つにまとめて、Word文書に含まれる単語とページ番号&行番号の一覧をExcelに出力して、ピボットテーブルまで作成する、Wordマクロをご紹介します。
単語一覧とピボットテーブルを作成するサンプルマクロ
先の二つのマクロをしっかり理解できている方にとっては、それほど難しくないはずです。
Dim rng As Word.Range
Dim cnt As Long ' 単語の数
Dim wd_pgln As Variant
Dim i As Long
Dim xls_src As Object ' Excel.Range
Dim xls_pvc As Object ' Excel.PivotCache
Dim xls_pvt As Object ' Excel.PivotTable
' 2次元配列に、単語とページ番号&行番号を格納
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")
' Excelに単語とページ番号&行番号の書き出し
.Workbooks.Add
.ActiveSheet.Name = "Data"
.Range(.Range("A2"), .Cells(cnt + 1, "B")).Value = wd_pgln
.Range("A1").Value = "語句"
.Range("B1").Value = "ページ・行"
' ピボットテーブルの作成
Set xls_src = .Sheets("Data").Range("A1").CurrentRegion
Set xls_pvc = .ActiveWorkbook.PivotCaches.Add( _
SourceType:=1, _
SourceData:=xls_src)
.Sheets.Add.Name = "Pivot"
Set xls_pvt = xls_pvc.CreatePivotTable( _
TableDestination:=.Sheets("Pivot").Range("A3"))
With xls_pvt
.PivotFields("語句").Orientation = 1 ' xlRowField
.PivotFields("ページ・行").Orientation = 4 ' xlDataField
End With
' Excelの表示
.Visible = True
End With
サンプルマクロの解説
既にご紹介しているWord文書に含まれる単語とページ番号&行番号の一覧をExcelに出力するWordマクロに、ピボットテーブルを作成する処理を取り込んでいます。
ピボットテーブルを作成する処理は、Excelマクロとほとんど同じですが、WordマクロからExcelを扱うので、
With CreateObject("Excel.Application")
End With
の間にExcelへの処理をまとめています。
参照設定を行っていないことを前提にしているためExcelの定数を使えませんから、
.PivotFields("語句").Orientation = 1 ' xlRowField
.PivotFields("ページ・行").Orientation = 4 ' xlDataField
のように数値を指定しています。
Home » ワードマクロ・Word VBAの使い方 » Office連携 » 単語一覧とピボットテーブルを作成するWordマクロ