Если в определенной папке есть несколько файлов Pdf, теперь вы хотите отобразить все эти имена файлов на листе и получить номера страниц каждого файла. Как можно быстро и легко справиться с этой работой в Excel?
Подсчитайте номера страниц файлов PDF из папки на листе с кодом VBA
Подсчитайте номера страниц файлов PDF из папки на листе с кодом VBA
Возможно, следующий код VBA может помочь вам отобразить все имена файлов PDF и их номера страниц на листе, пожалуйста, сделайте следующее:
1. Откройте рабочий лист, на котором вы хотите получить файлы PDF и номера страниц.
2. Удерживайте ALT + F11 ключи, и он открывает Microsoft Visual Basic для приложений окно.
3. Нажмите Вставить > Модули, и вставьте следующий макрос в Модули Окно.
Код VBA: перечислить все имена файлов PDF и номера страниц на листе:
Sub Test()
Dim I As Long
Dim xRg As Range
Dim xStr As String
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Dim xFileNum As Long
Dim RegExp As Object
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.pdf", vbDirectory)
Set xRg = Range("A1")
Range("A:B").ClearContents
Range("A1:B1").Font.Bold = True
xRg = "File Name"
xRg.Offset(0, 1) = "Pages"
I = 2
xStr = ""
Do While xFileName <> ""
Cells(I, 1) = xFileName
Set RegExp = CreateObject("VBscript.RegExp")
RegExp.Global = True
RegExp.Pattern = "/Types*/Page[^s]"
xFileNum = FreeFile
Open (xFdItem & xFileName) For Binary As #xFileNum
xStr = Space(LOF(xFileNum))
Get #xFileNum, , xStr
Close #xFileNum
Cells(I, 2) = RegExp.Execute(xStr).Count
I = I + 1
xFileName = Dir
Loop
Columns("A:B").AutoFit
End If
End Sub
4. После вставки кода, а затем нажмите F5 ключ для запуска этого кода и Приложения всплывает окно, выберите папку, содержащую файлы PDF, которые вы хотите перечислить, и подсчитайте номера страниц, см. снимок экрана:
5. А затем нажмите OK Кнопка, все имена файлов PDF и номера страниц перечислены на текущем листе, см. снимок экрана:
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (71)
Оценок пока нет. Оцените первым!
|
Добрый день!. Столкнулся с такой задачей, поискал готовые решения, ни наткнулся ни на один рабочий на вба, хотелось бы чтобы в таблицу можно было записать кол-во страниц из файлов. которые находятся в кокретной папке |
|
|
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Kentavrik7, здравствуйте! ссылку , но не проверял… Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
|
PooHkrd Пользователь Сообщений: 6602 Excel x64 О365 / 2016 / Online / Power BI |
Kentavrik7, можно при Power Query в помощи PBI. В Экселе, к сожалению, коннектора к pdf не предусмотрено. Вот горшок пустой, он предмет простой… |
|
Kentavrik7 Пользователь Сообщений: 433 |
#4 25.12.2019 15:27:27
Можно поподробнее как это сделать? |
||
|
msi2102 Пользователь Сообщений: 3137 |
Ещё пара ссылок: Ссылка_1 |
|
PooHkrd Пользователь Сообщений: 6602 Excel x64 О365 / 2016 / Online / Power BI |
#6 25.12.2019 15:44:15 Открываете PBI и выполняете там такой вот код:
Он вам посчитает количество страниц во всех PDF. Вот горшок пустой, он предмет простой… |
||
|
Petrosyan Пользователь Сообщений: 433 |
PooHkrd,Получает я открываю Power Qwery — выбираю папку, нажимаю изменить , расширенный редактор, вставляю туда код ваш и он выкидывает мне ошибку, подскажите, пожалуйста в чем подвох, не работал с Qwery |
|
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#8 25.12.2019 16:14:50 Коды из моей ссылки в #2 заставить работать не удалось, зато есть…
UPD: ещё код от ZVI. Ему я доверяю больше, чем «заморским диковинкам»
Petrosyan, вам осталось только цикл по всем файлам из папки организовать с проверкой на PDF’ность Изменено: Jack Famous — 25.12.2019 16:34:04 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
|
PooHkrd Пользователь Сообщений: 6602 Excel x64 О365 / 2016 / Online / Power BI |
Petrosyan, подвох в том, что вы не читаете то что я пишу. Этот код не работает ни в одной из версий Excel, он работает только в приложении Power BI. Можете скачать и пользоваться — оно бесплатное. Вот горшок пустой, он предмет простой… |
|
Petrosyan Пользователь Сообщений: 433 |
#10 25.12.2019 17:17:15
Power Qwery в моем понимании надстройка екселя, я как понял что это вы и имели ввиду.
|
||||
|
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#11 25.12.2019 17:18:57
ну а на моих PDF он не сработал… Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
|
Petrosyan Пользователь Сообщений: 433 |
#12 25.12.2019 18:04:47 Jack Famous,Вы заставили меня усомниться в методе, попробую вашими примерами сделал вот так:
Изменено: Petrosyan — 25.12.2019 18:09:38 |
||
|
Petrosyan Пользователь Сообщений: 433 |
Jack Famous,При проверке вышло что код считает не верно листы, заморский, пока что более точно мне посчитал |
|
DrillPipe Пользователь Сообщений: 342 |
Посмотрите тут обсуждалось ранее Импорт свойств файла *pdf в таблицу excel правда не все было на вба Изменено: DrillPipe — 25.12.2019 19:49:40 |
|
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#15 26.12.2019 09:13:59
не могли бы вы выслать пример такого файла? Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
|
msi2102 Пользователь Сообщений: 3137 |
Ссылку_2 (та, что импортная) из поста #5 приводил Андрей VG, вот ТУТ . Андрей Лящук выкладывал пару закодированных файлов, в которых не подсчитывается количество листов. Ещё (практически всеми вариантами) очень плохо подсчитывается количество листов если PDF имеет сложную структуру. |
|
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
msi2102, спасибо — глянул — всё-таки для полной универсальности нужны решения через спецсофт, который гарантировано вытащит инфу. Мне пока вполне хватит и того, что есть))) Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
|
pantel1987 Пользователь Сообщений: 76 |
#18 26.12.2019 10:28:59 а если эти pdf открывать вордом и воспользоваться?
|
||
Перейти к содержанию
На чтение 1 мин. Просмотров 96 Опубликовано 24.05.2021
Если в определенной папке есть несколько файлов PDF, теперь вы хотите отобразить все эти имена файлов на листе и получить номера страниц каждого файла. Как можно быстро и легко справиться с этой задачей в Excel?
Подсчитайте номера страниц файлов PDF из папки на листе с кодом VBA
Подсчитайте номера страниц файлов PDF из папки на листе с кодом VBA
Возможно, следующий код VBA может помочь вам отобразить все имена файлов PDF и их номера страниц на листе, сделайте следующее:
1 . Откройте рабочий лист, на котором вы хотите получить файлы PDF и номера страниц.
2 . Удерживая нажатыми клавиши ALT + F11 , откроется окно Microsoft Visual Basic для приложений .
3 . Нажмите Вставить > Module и вставьте следующий макрос в окно Module .
Код VBA: перечислить все имена файлов PDF и номера страниц на листе:
4 . Вставив код, нажмите клавишу F5 , чтобы запустить этот код, и появится окно Обзор , выберите папку, содержащую файлы Pdf. вы хотите перечислить и подсчитать номера страниц, см. снимок экрана:

5 . Затем нажмите кнопку OK , все имена файлов PDF и номера страниц будут перечислены на текущем листе, см. Снимок экрана:

|
Группа: Пользователи Ранг: Новичок Сообщений: 45
Замечаний: |
Добрый день, всем!
Обратились ко мне коллеги с просьбой упростить им жизнь (так как я чуть чуть знаю VBA и Excel). Люди они хорошие, решил им помочь.
Суть проблемы в том, что они формируют описи для эл. документов (сканы pdf файлов)
Делают таблицу Excel в которой пишут: Номер группы документа, Имя файла, количество страниц, путь к нему.
Файлы лежат в папке «0.Опись» и называются (пример) «1.13 Ведомость.pdf»… «1.13 Опросной лист.pdf» … «2.10 Сводный лист.pdf» (в итоге получается опись с разбивкой по группам 1.1 … 1.2… 2.10… и т.д.)
Почти все реализовал, кроме одного момента…
В сети нашел пример кода для подсчета страниц в pdf (спасибо добрым людям), код работает
Но столкнулся с неприятным моментом… иногда на некоторых файлах выдается ошибка
«input past end of file».
Из описания ошибки понял, что проблема в самом pdf и так как pdf приходят «из вне», то исправить такие ошибки не представляется возможным(то ли от сканировали не так, то ли данные в файле не того вида… точно не понял)
Поэтому вижу только один выход, пропускать дынный фаил и делать помету (например выделение цветом ячейку с п. «1.13»). Что бы потом пользователи в ручную вносили корректировки в итоговую опись. Понятно, что это «кривое» решение, но люди и этому будут рады…
И тут вопрос…
Как обработать/пропустить ошибки в VBA? Возможно это?
Я с этим не сталкивался…
Вот пример кода, который считает страницы в pdf
[vba]
Код
Sub fileName()
Dim fso, myPath, myFolder, myFile, myFilesPath(), myFilesName(), i, j
Dim iPath As String
‘Записываем в переменную myPath полное имя папки
myPath = ThisWorkbook.path & «.Опись»
Set fso = CreateObject(«Scripting.FileSystemObject»)
Set myFolder = fso.GetFolder(myPath)
If myFolder.Files.Count = 0 Then
MsgBox «В папке «» & myPath & «» файлов нет»
Exit Sub
End If
ReDim myFilesPath(1 To myFolder.Files.Count)
ReDim myFilesName(1 To myFolder.Files.Count)
For Each myFile In myFolder.Files
i = i + 1
myFilesPath(i) = myFile.path
myFilesName(i) = myFile.Name
Debug.Print myFilesName(i)
Next
Debug.Print «Фильтр = » & UBound(myFilesName)
For j = 1 To UBound(myFilesName)
If myFilesName(j) Like «1.13 *» Then ‘метка имени файла, в котором считаем страницы — нужна для группировки
iPath = myFilesPath(j)
Call PDFCount(iPath)
End If
Next j
End Sub
Function PDFCount(PDFИмя As String)
PDFCount = 1
Ищем = «/Count»
Разделитель = Chr(10)
Open PDFИмя For Binary Access Read Lock Read As #1
While Not EOF(1)
Line Input #1, fstr
If InStr(fstr, Ищем) > 0 Then
PDFCount = word(fstr)
End If
Wend
Close #1
Debug.Print PDFИмя & «: Страниц = » & PDFCount
End Function
[/vba]
Одним словом, буду очень благодарен если кто-нибудь, что-нибудь подскажет или даст наводку где почитать.
Всем заранее спасибо!
З.Ы. Пример выложить, к сожалению не могу, так как все файлы на рабочем компьютере и их не скачать.
I will post my solution to this question, but maybe others have found a better way.
I wanted to obtain the number of pages in a pdf document using VBA.
I reviewed similar [vba] and [acrobat] questions, but I did not find a stand alone solution. After reviewing other posts, Adobe Acrobat’s SDK, and the VBA object browser, I learned enough to piece together this solution.
I am running Excel 2013 and Adobe Acrobat 9.0 Pro.
I understand its ok to answer my own question.
asked Jul 10, 2017 at 14:46
This solution works when Excel 2013 Professional and Adobe Acrobat 9.0 Pro are installed.
You will need to enable the Adobe object model: Tools -> References -> Acrobat checkbox selected.
Adobe’s SDK has limited documentation on the GetNumPages method.
'with Adobe Acrobat 9 Professional installed
'with Tools -> References -> Acrobat checkbox selected
Sub AcrobatGetNumPages()
Dim AcroDoc As Object
Set AcroDoc = New AcroPDDoc
AcroDoc.Open ("C:UsersPublicLorem ipsum.pdf") 'update file location
PageNum = AcroDoc.GetNumPages
MsgBox PageNum
AcroDoc.Close
End Sub
answered Jul 10, 2017 at 14:55
TimTim
611 gold badge1 silver badge6 bronze badges
Inspired from : https://www.extendoffice.com/documents/excel/5330-excel-vba-pdf-page-count.html
I created the function below. I do not have Adob accrobat pro installed.
Sub Test()
Dim vFolder, vFileName
vFolder = "D:Test Count Pages In PDF File"
'vFolder = "D:Test Count Pages In PDF File" '--> fine for both forms (with or without PathSeparator)
vFileName = "My File.pdf"
Debug.Print fNumberOfPages_in_PDF_File(vFolder, vFileName)
End Sub
Function fNumberOfPages_in_PDF_File(vFolder, vFileName)
Dim xStr As String
Dim xFileNum As Long
Dim RegExp As Object
'--- Number of Pages =0 if the file is not a PDF file
If Not vFileName Like "*.pdf" Then
fNumberOfPages_in_PDF_File = 0
Exit Function
End If
'--- Add PathSeparator ("") if it does not exist
If Right(vFolder, 1) <> Application.PathSeparator Then
vFolder = vFolder & Application.PathSeparator
End If
'--- Count the number of pages in Pdf File
xStr = ""
Set RegExp = CreateObject("VBscript.RegExp")
RegExp.Global = True
RegExp.Pattern = "/Types*/Page[^s]"
xFileNum = FreeFile
Open (vFolder & vFileName) For Binary As #xFileNum
xStr = Space(LOF(xFileNum))
Get #xFileNum, , xStr
Close #xFileNum
fNumberOfPages_in_PDF_File = RegExp.Execute(xStr).Count
End Function
answered May 17, 2021 at 10:14
1
Option Explicit
Public PDFDoc As AcroPDDoc, PDFPage As Object, A3&, A4&
Sub Main()
Dim fso As FileSystemObject, fld As Folder, filePDF As File, fileName$, i&, Arr()
Set fso = New FileSystemObject
Set PDFDoc = New AcroPDDoc
Set fld = fso.GetFolder(ThisWorkbook.Path)
ReDim Arr(1 To 1000, 1 To 4)
For Each filePDF In fld.Files
Application.Calculation = xlCalculationManual
fileName = filePDF.Name
If Right(fileName, 4) = ".pdf" Then
CountPagesPDF (ThisWorkbook.Path & "" & fileName)
i = i + 1
Arr(i, 1) = fileName
Arr(i, 2) = A3 + A4
Arr(i, 3) = A3
Arr(i, 4) = A4
End If
Next
Range("A3:D" & Cells.Rows.Count).Clear
Range("A3:D" & (i + 1)) = Arr
Set PDFPage = Nothing
Set PDFDoc = Nothing
Set fso = Nothing
Application.Calculation = xlCalculationAutomatic
End Sub
Sub CountPagesPDF(FullFileName$)
Dim j&, n&, x, y
A3 = 0
A4 = 0
PDFDoc.Open (FullFileName)
n = PDFDoc.GetNumPages
Application.Calculation = xlCalculationManual
For j = 0 To n - 1
Set PDFPage = PDFDoc.AcquirePage(j)
x = PDFPage.GetSize().x
y = PDFPage.GetSize().y
If x + y > 1500 Then A3 = A3 + 1 Else A4 = A4 + 1
Next
Application.Calculation = xlCalculationAutomatic
PDFDoc.Close
End Sub
Poul Bak
10.2k4 gold badges29 silver badges53 bronze badges
answered Feb 2, 2021 at 11:00
1





