始めてみた

なにか新しいことを始めるとき,モチベーション維持するためのBlog.

Excel VBA #004

ページ数取得

Sub GetNSheetsNPages()
    Dim root As String, target As String, files As String, msg As String, filePath As String
    Dim wb As Workbook, ws As Worksheet
    Dim nSheets As Integer, nPages As Integer, wbPage As Integer
    nSheets = 0
    nPages = 0
    root = ActiveWorkbook.Path
    target = ".\dir01\"
    files = Dir(root & target & "*.xlsx", vbNormal)
    Do While files <> ""
        msg = msg & files & vbCrLf
        filePath = root & target & files
        ' open workbook
        Set wb = Application.Workbooks.Open(filePath)
        wb.Activate
        ' access each worksheet contained in wookbook
        For Each ws In wb.Worksheets
            ActiveWindow.View = xlPageBreakPreview '改ページプレビュー
            'Debug.Print ws.name; " : " & ws.PageSetup.Pages.count 'Excel 2007以降に対応
            nPages = nPages + ws.PageSetup.Pages.count 'Excel 2007以降に対応
            nSheets = nSheets + 1
        Next
        wb.Close False
        files = Dir()
    Loop
    MsgBox msg _
    & vbCrLf & "nSheets : " & nSheets _
    & vbCrLf & "nPages : " & nPages
End Sub
'Private Function PrintPage(ws As Worksheet) As Long
'     Dim H_Break As Integer, V_Break As Integer, P_Page As Integer
'     H_Break = ws.HPageBreaks.count    '横の改ページ数取得
'     V_Break = ws.VPageBreaks.count    '縦の改ページ数取得
'    ' 改ページによりページ数をカウント
'     If V_Break = 0 Then
'         P_Page = H_Break + 1
'     Else
'       H_Break = H_Break + 1
'       V_Break = V_Break + 1
'       P_Page = H_Break * V_Break
'     End If
'     PrintPage = P_Page
'     Dim name As String
'     name = ws.name
'     Debug.Print name & " : " & H_Break & ":" & V_Break & ":" & P_Page
'End Function