Loading

[Excel VBA] マクロで対象ブックの印刷総枚数を取得する

Windows Excel

「100個のエクセルファイル、全部の総印刷ページ数出しといて」といわれた時、1つずつ開いて。。というのはなかなか辛いですよね。。ということで、今回は、対象ブックの総印刷ページ数を取得するマクロを組み込みました!これで、パスさえ掛けば後はクリックして待つだけです、パソコンに働いてもらい、飲みにでも行きましょう(。・ω・。)

[Excel VBA] マクロで対象ブックの印刷総枚数を取得する

やりたいこと

対象ブックの、印刷総枚数を取得したい!1ブックのみだと旨味がないので、一覧形式で複数同時に取得できるようにします(。・ω・。)

エクセルマクロ_印刷総数取得

対象シートの印刷枚数取得方法

対象シートの印刷枚数を取得する際は、「.PageSetup.Pages.Count」を利用します。対象のシートオブジェクトに、「.PageSetup.Pages.Count」を付与して下さい(。・ω・。)

    ’# 取得方法
    [シートオブジェクト].PageSetup.Pages.Count

    '# 利用サンプル
    Dim shtEach As Excel.Worksheet
    shtEach.Activate
    lngPageCount = shtEach.PageSetup.Pages.Count

全シート捜索方法

1シートごとの印刷ページ数が取得できたので、1ブックの全シートに対して処理を繰り返し、総ページ数を割り出します。全シートに対して処理を続行するには、For Eachで回して取得するのが楽です!

    ’# 取得方法
    For Each [シートオブジェクト] In [対象ブックオブジェクト].Worksheets
        ...
    Next [シートオブジェクト]

    '# 利用サンプル
    Dim objWorkBook As Workbook
    Dim shtEach As Excel.Worksheet
    For Each shtEach In objWorkBook.Worksheets
        shtEach.Activate
    Next shtEach

まとめ:全ソースコード

コピペでそのまま使えるソースを貼り付けます。裏で開くとか、スクリーンアップデートとか、色々パフォーマンスはグダグダなソースなので、適宜修正お願い致します(ノд・。)

Option Explicit

'# ----------------------------------------------------
'# 対象ブックの総印刷枚数を取得するマクロ
'#   B列:取得対象のフォルダパス
'#   C列:総印刷枚数出力
'# ----------------------------------------------------
Private Sub getPageNum()
    On Error GoTo ErrHandler

    Dim objBook As Workbook
    Dim strFilePath As String
    Dim lngPageCount As Long
    Dim lngStartRow As Long: lngStartRow = 4
    Dim objToolSheet As Worksheet: Set objToolSheet = ThisWorkbook.ActiveSheet
    
    Do
        strFilePath = objToolSheet.Cells(lngStartRow, 2).Value
        
        '# B列セルにファイルパスが記載されている範囲内で印刷枚数取得
        If strFilePath <> "" Then
            '# 総ページ数を取得
            Set objBook = Application.Workbooks.Open(strFilePath, ReadOnly:=True)
            lngPageCount = GetBookPageNum(objBook)
            objBook.Close
            
            '# 結果書き込み
            objToolSheet.Cells(lngStartRow, 3).Value = lngPageCount
            lngStartRow = lngStartRow + 1
        Else
            Exit Do
        End If
    Loop
    
    MsgBox "ページ数取得完了(。・ω・。)"
    
ErrHandler:
    Debug.Print Err.Number & ":" & Err.Description
    Exit Sub
End Sub

'# ----------------------------------------------------
'# 引数に与えられたBOOKの総印刷枚数を出力する関数
'#   @pObjWorkBook:印刷枚数出力対象のBOOKパス
'# ----------------------------------------------------
Function GetBookPageNum(pObjWorkBook As Workbook) As Long

    Dim lngPageCount As Long
    Dim shtEach As Excel.Worksheet
    
    lngPageCount = 0
    
    '# 各シートごとに印刷枚数を取得し、加算
    For Each shtEach In pObjWorkBook.Worksheets
        shtEach.Activate
        Debug.Print shtEach.Name & " : " & shtEach.PageSetup.Pages.Count
        lngPageCount = lngPageCount + shtEach.PageSetup.Pages.Count
    Next shtEach
    
    GetBookPageNum = lngPageCount

End Function

Windows関連記事

Windows関連のその他記事もまとめてますので、是非お立ち寄りください(。・ω・。)

[パワプロ] 称号攻略方法 〜ゴールデンエイト等〜

SSHでリモートコマンド実行、成功失敗の返り値(戻り値)取得方法

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


New Article

  1. cluster いつかの放課後 美しいワールド
  2. 武烈皇后 神器
  3. 三国志真戦 絆効果
  4. ドラクエウォーク きせきのつるぎ
  5. 三国天武 武烈皇后 呉夫人
PAGE TOP