ExcelVBA:マクロでページ数を取得してシート一覧表を作成する方法

photo credit: My desktop via photopin (license)
20100507

エクセルの各シート名とページ数を取得して、一覧表を作成するマクロです。
ページ数を目視でひとつひとつ数えると、面倒で時間がかかりますよね。
マニュアルや仕様書の目次作成なんかに役立ちました。
個人用マクロブックなどに貼ってお使いください。

ソースは以下のとおり。

ページ数を取得してシート一覧表を作成するVBAのソース

'=============================================
' ページ数を取得してシート一覧表を作成
' 2010.05.06
'=============================================
Sub ページ数を取得してシート一覧表を作成()

    Dim mysheet As Worksheet    '各シート
    Dim page_sum As Integer     'ページ数
    Dim list() As Variant       'シート名とページ数格納用
    Dim i As Integer            '配列添え字用
    Dim maxi As Integer         '配列最大添え字用

    '-----------------------------------------
    ' シート名とページ数を配列に代入
    '-----------------------------------------
    maxi = 0

    'ブックの各シートごとに
    For Each mysheet In Worksheets

        'シートのページ数取得
        mysheet.Activate
        page_sum = Application.ExecuteExcel4Macro("get.document(50)")

        '配列にシート名とページ数を代入
        ReDim Preserve list(1, maxi)
        list(0, maxi) = mysheet.Name
        list(1, maxi) = page_sum
        maxi = maxi + 1

    Next mysheet

    '-----------------------------------------
    ' 配列を新規ブックに転記
    '-----------------------------------------

    '新規ブック追加
    Workbooks.Add
    ActiveSheet.Name = "シート一覧"

    'リストタイトル設定
    Range("A1").Value = "シート名"
    Range("B1").Value = "ページ数"

    '配列転記
    For i = 0 To maxi - 1
        Range("A" & i + 2) = list(0, i)
        Range("B" & i + 2) = list(1, i)
    Next

End Sub

エクセルの話題はトラコミュもおすすめ
トラコミュ エクセル(Excel)