「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関連のその他記事もまとめてますので、是非お立ち寄りください(。・ω・。)
この記事へのコメントはありません。