Я пытаюсь найти способ перечисления количества страниц в документах с несколькими словами, все они сохранены в одной папке. Возможно ли это с помощью VBA?
Я использую:
- Windows 7 и
- Microsoft Office 2007
Я пытаюсь найти способ перечисления количества страниц в документах с несколькими словами, все они сохранены в одной папке. Возможно ли это с помощью VBA?
Я использую:
Ответы:
Я не знаю, как это сделать в VBA (в самом Word), но вы можете создать небольшой VBS-файл, поместить его в каталог и дважды щелкнуть по нему:
Const wdStatisticPages = 2
Set FSO = CreateObject("Scripting.FileSystemObject")
currentPath = fso.GetAbsolutePathName(".")
set FLD = FSO.GetFolder(currentPath)
Set objWord = CreateObject("Word.Application")
objWord.Visible = False
For Each Fil In FLD.Files
If UCase(FSO.GetExtensionName(Fil.name)) = "DOCX" Then
Set objDoc = objWord.Documents.Open(currentPath & "\" & Fil.Name)
intPages = intPages + objDoc.ComputeStatistics(wdStatisticPages)
objDoc.Saved = True
objDoc.Close
End If
Next
objWord.Quit
Wscript.Echo "Total pages: " & intPages
Set oShell = Nothing
Set FLD = Nothing
Set FSO = Nothing
Предполагая, что все файлы имеют .docx
расширение.
Вдохновение (и объяснение) пришло отсюда . Для простоты я не использовал, objWMIService
а просто пошел с Scripting.FileSystemObject
. Вы также можете установить objWord.Visible = False
на True
. Вы увидите, как приложение Word мерцает и выключается.
Вы также можете показать страницы в «Проводнике Windows». Просто щелкните правой кнопкой мыши столбцы над файлами и выберите больше, вы можете выбрать, pages
чтобы показать столбец со страницами в Word-документе. Таким образом, вы можете увидеть количество страниц до открытия документа. (Вы должны быть в Details
-view, чтобы увидеть столбцы)
Если вы действительно хотите, вы можете также перевести это на VBA (Word-macro).
Смотрите мой предыдущий ответ на аналогичный вопрос - это может помочь.
Это возможно, технически, но не всегда надежно, особенно без (в вычислительном отношении) затрат, чего никто никогда не хочет, и мой ответ объясняет почему.