top of page

Macro to Get Page Count of PDF Files


There's some VBA code posted on this site,

Press ALT + F11 from Excel in order to enter Visual Basic. Right click on a Module and select Insert . . . Module . Then paste the below code in. [You may want to copy the code directly from the mrexcel.com, as the Wix text editor may alter the formatting of the code so it doesn't work.]

On the line beginning My Path = , enter the path to the directory containing the PDFs that you need page counts for.

Press the play button and the macro will generate a list of the file names in column A and their page totals in column B.

Thanks to Haluk for posting this code!

Sub Test() Dim MyPath As String, MyFile As String Dim i As Long MyPath = "C:\TestFolder" MyFile = Dir(MyPath & Application.PathSeparator & "*.pdf", vbDirectory) Range("A:B").ClearContents Range("A1") = "File Name": Range("B1") = "Pages" Range("A1:B1").Font.Bold = True i = 1 Do While MyFile <> "" i = i + 1 Cells(i, 1) = MyFile Cells(i, 2) = GetPageNum(MyPath & Application.PathSeparator & MyFile) MyFile = Dir Loop Columns("A:B").AutoFit MsgBox "Total of " & i - 1 & " PDF files have been found" & vbCrLf _ & " File names and corresponding count of pages have been written on " _ & ActiveSheet.Name, vbInformation, "Report..." End Sub ' Function GetPageNum(PDF_File As String) 'Haluk 19/10/2008 Dim FileNum As Long Dim strRetVal As String Dim RegExp Set RegExp = CreateObject("VBscript.RegExp") RegExp.Global = True RegExp.Pattern = "/Type\s*/Page[^s]" FileNum = FreeFile Open PDF_File For Binary As #FileNum strRetVal = Space(LOF(FileNum)) Get #FileNum, , strRetVal Close #FileNum GetPageNum = RegExp.Execute(strRetVal).Count End Function


bottom of page