Loading

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

Windows Excel

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

やりたいこと

対象ブックの、印刷総枚数を取得したい!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関連のその他記事もまとめてますので、是非お立ち寄りください(。・ω・。)

ふぇにば|PhoEniBiR

投稿者プロフィール

わくわくしてて偉い系VTuver ふぇにば です。
少しでもお役に立てておりましたら嬉しいです(。・ω・。)

関連記事

  1. [Excel] 効率を大幅に上げる便利な関数使い方一覧

    2017.01.06
  2. 『Excel VBA』マクロでエクセルの行の高さを自動調整する方法

    2018.06.13
  3. Vimを10倍かっこよく使いこなすためのコマンド集

    2016.05.12
  4. [jQuery] jQueryでツールチップを自作する方法

    2020.05.17
  5. [PHP] ショートカット(短縮)URL取得 with Google短縮URL …

    2016.05.09
  6. [jQuery] formのアクションを変更する〜フォーム送信時(Submit時…

    2018.08.10

コメント

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

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

CAPTCHA


New Article

  1. ChatGPT × StableDiffusion
  2. ChatGPT VS コンサルタント
  3. 注目したい5つのテクノロジートレンド2023
PAGE TOP