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

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

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

関連記事

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

    2016.06.23
  2. [PHP] ソーシャルボタン自作!PHPでSNSのカウント数を取得する(Face…

    2017.11.25
  3. [PHP] igo-phpを用いた形態素解析〜タグクラウド自作に向けて〜

    2016.05.05
  4. [jQuery] カーソルをあてた時に画像を切り替える方法(マウスオーバー・マウ…

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

    2017.01.06
  6. [Excel VBA] マクロで月の日数を取得する(当月・前月・翌月)

    2016.08.02

コメント

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

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

CAPTCHA


New Article

  1. sangokutenbu_toronazonazo
  2. sangokutenbu_nikyo
  3. sangokutenbu_ranking
  4. sangokutenbu_bunou
  5. gintama
PAGE TOP