Home » ワードマクロ・Word VBAの使い方 » Office連携 » 単語一覧とピボットテーブルを作成するWordマクロ

単語一覧とピボットテーブルを作成するWordマクロ

対象:Word2003, Word2007, Word2010

Word文書に含まれる単語とページ番号&行番号の一覧をExcelに出力するWordマクロと、その一覧を元にピボットテーブルを作成するExcelマクロをご紹介しました。

二つのマクロを一つにまとめて、Word文書に含まれる単語とページ番号&行番号の一覧をExcelに出力して、ピボットテーブルまで作成する、Wordマクロをご紹介します。

[スポンサードリンク]

単語一覧とピボットテーブルを作成するサンプルマクロ

先の二つのマクロをしっかり理解できている方にとっては、それほど難しくないはずです。

Sub 全単語とページと行の一覧を出力してピボットテーブルを作成する()

 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

End Sub

サンプルマクロの解説

既にご紹介しているWord文書に含まれる単語とページ番号&行番号の一覧をExcelに出力するWordマクロに、ピボットテーブルを作成する処理を取り込んでいます。

ピボットテーブルを作成する処理は、Excelマクロとほとんど同じですが、WordマクロからExcelを扱うので、
  With CreateObject("Excel.Application")
  End With
の間にExcelへの処理をまとめています。

参照設定を行っていないことを前提にしているためExcelの定数を使えませんから、
   .PivotFields("語句").Orientation = 1 ' xlRowField
   .PivotFields("ページ・行").Orientation = 4 ' xlDataField
のように数値を指定しています。

関連語句
VBA, Visual Baisc for Applications

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » Office連携 » 単語一覧とピボットテーブルを作成するWordマクロ

「Office連携」の記事一覧

検索


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

.