В этой статье мы рассмотрим различные методы подсчета количества страниц в PDF-файлах в определенной папке с помощью VBA Excel. Независимо от того, управляете ли вы большой коллекцией PDF-документов или вам необходимо отслеживать количество страниц в конкретном проекте, эти методы сэкономят вам время и усилия. Мы предоставим простые для понимания примеры кода и объясним каждый метод в разговорной форме.
Метод 1: библиотека Adobe Acrobat
Первый метод предполагает использование библиотеки Adobe Acrobat в VBA Excel. Эта библиотека предоставляет мощные функции для взаимодействия с файлами PDF. Для начала нам нужно добавить ссылку на библиотеку Adobe Acrobat в наш проект VBA. После добавления мы можем использовать методы и свойства библиотеки для доступа к количеству страниц каждого PDF-файла в папке.
Вот пример фрагмента кода:
Sub CountPDFPages_AcrobatLibrary()
Dim objAcroApp As Object
Dim objAcroDoc As Object
Dim folderPath As String
Dim filePath As String
Dim pageCount As Integer
folderPath = "C:\Path\To\Folder\"
filePath = Dir(folderPath & "*.pdf")
Set objAcroApp = CreateObject("AcroExch.App")
Do While filePath <> ""
Set objAcroDoc = CreateObject("AcroExch.PDDoc")
objAcroDoc.Open folderPath & filePath
pageCount = objAcroDoc.GetNumPages()
objAcroDoc.Close
Set objAcroDoc = Nothing
' Do something with the page count
' For example, display it in the Immediate window
Debug.Print filePath & ": " & pageCount
filePath = Dir
Loop
objAcroApp.Exit
Set objAcroApp = Nothing
End Sub
Метод 2: внешний инструмент командной строки.
Другой подход заключается в использовании внешнего инструмента командной строки, например pdftk
(PDF Toolkit) или qpdf
. вместе с функцией Shell
VBA Excel. Эти инструменты позволяют извлекать информацию о PDF-файлах, включая количество страниц. Мы можем вызвать эти инструменты из VBA и записать их выходные данные, чтобы получить количество страниц для каждого PDF-файла в папке.
Вот пример фрагмента кода с использованием pdftk
:
Sub CountPDFPages_PDFtk()
Dim folderPath As String
Dim filePath As String
Dim command As String
Dim output As String
folderPath = "C:\Path\To\Folder\"
filePath = Dir(folderPath & "*.pdf")
Do While filePath <> ""
command = "pdftk """ & folderPath & filePath & """ dump_data | findstr /C:NumberOfPages"
output = VBA.CreateObject("WScript.Shell").Exec("cmd /c " & command).StdOutput.ReadAll
' Parse the output to extract the page count
' For example, if the output is "NumberOfPages: 10", extract "10"
pageCount = Val(Split(output, ":")(1))
' Do something with the page count
' For example, display it in the Immediate window
Debug.Print filePath & ": " & pageCount
filePath = Dir
Loop
End Sub
Метод 3: библиотека PDFium
Библиотека PDFium представляет собой легкое решение с открытым исходным кодом для работы с PDF-файлами. Мы можем использовать эту библиотеку в VBA Excel, используя функции Windows API для вызовов DLL. Загрузив PDFium DLL и используя ее функции, мы можем получить количество страниц для каждого PDF-файла в папке.
Вот пример фрагмента кода:
Private Declare PtrSafe Function FPDF_LoadLibrary Lib "pdfium.dll" () As LongPtr
Private Declare PtrSafe Function FPDF_InitLibrary Lib "pdfium.dll" () As Boolean
Private Declare PtrSafe Function FPDF_NewDocument Lib "pdfium.dll" (ByVal filePath As String, ByVal password As String) As LongPtr
Private Declare PtrSafe Function FPDF_GetPageCount Lib "pdfium.dll" (ByVal doc As LongPtr) As Long
Private Declare PtrSafe Function FPDF_CloseDocument Lib "pdfium.dll" (ByVal doc As LongPtr) As Boolean
Private Declare PtrSafe Function FPDF_DestroyLibrary Lib "pdfium.dll" () As Boolean
Sub CountPDFPages_PDFium()
Dim folderPath As String
Dim filePath As String
Dim doc As LongPtr
Dim pageCount As Long
FPDF_LoadLibrary ' Load PDFium DLL
FPDF_InitLibrary ' Initialize PDFium library
folderPath = "C:\Path\To\Folder\"
filePath= Dir(folderPath & "*.pdf")
Do While filePath <> ""
doc = FPDF_NewDocument(folderPath & filePath, "")
pageCount = FPDF_GetPageCount(doc)
FPDF_CloseDocument doc
' Do something with the page count
' For example, display it in the Immediate window
Debug.Print filePath & ": " & pageCount
filePath = Dir
Loop
FPDF_DestroyLibrary ' Clean up PDFium library
End Sub
В этой статье мы рассмотрели различные методы подсчета количества страниц в PDF-файлах в определенной папке с помощью VBA Excel. Мы рассмотрели методы с использованием библиотеки Adobe Acrobat, внешних инструментов командной строки, таких как pdftk
, и библиотеки PDFium. Каждый метод имеет свои преимущества и особенности, поэтому выберите тот, который лучше всего соответствует вашим требованиям. Внедрив эти методы, вы сможете автоматизировать процесс подсчета страниц и оптимизировать рабочий процесс.
Не забудьте адаптировать фрагменты кода к вашим конкретным потребностям, например изменить путь к папке и обработать результаты подсчета страниц в соответствии с желаемыми действиями. Приятного кодирования!