Excel2010Word文書に含まれる単語と、ページ番号&行番号の一覧をExcelに出力する、Wordマクロをご紹介しました。この一覧を元に、それぞれの単語がいくつ存在するのかをカウントするために、ピボットテーブルを作成します。テーブルを作成する処理も、Wordマクロに組み込むことができますが、まずは、ピボットテーブルを作成するExcelマクロをご紹介しておきます。[スポンサードリンク]ピボットテーブルを作成するサンプルマクロピボットテーブルの作成をマクロ記録してみると、たくさんのコードを吐き出してくれますが、整理するとかなりシンプルなコードでピボットテーブルを作成できます。Sub先日ご紹介したWordマクロで出力された、「語句」「ページ・行」というフィールドのあるワークシートがアクティブな状態で、上記のExcelマクロを実行すると、「語句」がいくあるのかをカウントするピボットテーブルができます。ActiveSheet.Range("A1").CurrentRegionピボットテーブルを作成するシートを挿入してSheets.Addピボットテーブルを作成します。_CreatePivotTable(TableDestination:=Range("A3"))このピボットテーブルを作成する部分は、引数がたくさん指定されているので複雑に見えるかもしれませんが、引数を取り払った状態で眺めてみると、何をやっているのかわかりやすくなるはずです。引数を取り払うと「ActiveWorkbook.PivotCaches.Add.CreatePivotTable」といったオブジェクト式となります。ActiveWorkbookの、PivotCachesコレクションに、Addして、そこからCreatePivotTableしているのです。Applications)で作成する場合、まずPivotCacheオブジェクトを作成して、そこからCreatePivotTableするという手順が必要です。PivotCacheオブジェクトを作成する、ActiveWorkbook.PivotCachesのAddメソッドの引数が、SourceType:=xlDatabaseSourceData:=rngDataです。「SourceType」「SourceData」という引数の名前から、何を指定しているのかはわかるでしょう。上記のマクロでは、SourceDataを指定しやすくするために、事前にオブジェクト変数・srcに元データを格納しています。ActiveWorkbook.PivotCachesのAddメソッドで、PivotCacheオブジェクトが作られたので、そのPivotCacheオブジェクトに対して、CreatePivotTableメソッドを実行しています。CreatePivotTableメソッドの引数が「TableDestination:=Range("A3")」です。これも「TableDestination」という引数名から、何を指示しているのかわかるでしょう。ピボットテーブルを作成する直前にSheets.Addしていますから、TableDestination:=Range("A3")は、その新規に作成されたシートのA3セルを意味しています。_CreatePivotTable(TableDestination:=Range("A3"))と、PivotCacheオブジェクトの作成とPivotTableオブジェクトの作成を1行で行っていますが、一旦意味がわかったら、以下のように分割するほうが可読性の面からいいでしょう。_TableDestination:=ActiveSheet.Range("A3"))ピボットテーブルができたあとに、フィールドを配置しています。With「xlRowField」「xlDataField」という定数から、何を指定しているかわかるはずです。データエリアに配置した「ページ・行」フィールドは、「p.1-1」というフォーマットの文字列なので、特に指示しなくても個数をカウントしてくれます。このExcelマクロを、Wordマクロに組み込んでやれば、Word文書に含まれる単語とページ番号&行番号の一覧をExcelに出力して、単語の個数をカウントするピボットテーブルを作成するところまで、一気に行うことができます。その具体的コードは別記事で近日中にご紹介します。単語一覧とピボットテーブルを作成するWordマクロを公開しました(2012-8-27)。Officeの使い方などを紹介し続け(2012年頃からはVBA関連記事が多め)、毎日5万人の方にご覧いただいています。