Нажмите "Enter", чтобы перейти к содержанию

Как нумеровать странички в ворде: Как пронумеровать страницы в Word

vba — Получить количество страниц в документе Word

спросил

Изменено 7 месяцев назад

Просмотрено 28 тысяч раз

Я вношу множество изменений в документ Word, используя автоматизацию, а затем запускаю макрос VBA, который, среди прочего, проверяет, что в документе не больше определенного количества страниц.

Я использую ActiveDocument.Information(wdNumberOfPagesInDocument) для получения количества страниц, но этот метод возвращает неверный результат. Я думаю, это связано с тем, что Word еще не обновил нумерацию страниц документа, чтобы отразить внесенные мной изменения.

ActiveDocument.ComputeStatistics(wdStatisticPages) также страдает от той же проблемы.

Я пытался вставить вызов ActiveDocument.

Repaginate , но это не имеет значения.

Мне удалось добавить абзац в конец документа, а затем снова его удалить, но этот хак больше не работает (недавно я перешел с Word 2003 на Word 2010).

Можно ли каким-либо образом заставить Word выполнить фактически повторную анимацию и/или дождаться завершения повторной анимации?

  • vba
  • мс-слово

17

Я только что потратил добрых 2 часа, пытаясь решить эту проблему, и я еще не видел этот ответ ни на одном форуме, поэтому я решил поделиться им.

https://msdn.microsoft.com/en-us/vba/word-vba/articles/pages-object-word?f=255&MSPPError=-2147217396

Это дало мне мое решение в сочетании с прочесыванием статей для обнаружил, что большинство решений, на которые ссылаются люди, не поддерживаются в новейших версиях Word. Я не знаю, в какой версии он изменился, но я предполагаю, что 2013 год и новее могут использовать этот код для подсчета страниц:

 ActiveDocument. ActiveWindow.Panes(1).Pages.Count.
 

Я полагаю, что это работает следующим образом: ActiveDocument выбирает файл, ActiveWindow подтверждает, что файл, который будет использоваться, находится в текущем окне (в случае, если файл открыт в нескольких окнах на вкладке просмотра), Panes определяет, что если есть несколько окна/разделенные панели/любая другая ерунда, которую вы хотите, чтобы «первая» была оценена, pages.count обозначает объект страницы, который будет оцениваться путем подсчета количества элементов в коллекции.

Любой, кто знает больше, может поправить меня, но это первый метод, который дал мне правильное количество страниц в любом документе, который я пробовал!

Также я извиняюсь, но я не могу понять, как отформатировать эту строку в блок кода. Если модераторы хотят отредактировать мой комментарий, будьте моим гостем.

1

Попробуйте (возможно, после ActiveDocument.Repaginate )

 ActiveDocument. BuiltinDocumentProperties(wdPropertyPages)
 

Это приводит к тому, что мой Word 2010 проводит полсекунды со статусом «Подсчет слов» в строке состояния, в то время как ActiveDocument.ComputeStatistics(wdStatisticPages) немедленно возвращает результат.

Источник: https://support.microsoft.com/en-us/kb/185509

5

После внесения всех изменений можно использовать OnTime , чтобы задать небольшую задержку перед чтением статистики страницы.

 Application.OnTime Когда:=Сейчас + TimeValue("00:00:02"), _
        Имя: = "Обновление статистики"
 

Я бы также обновил все поля до этого OnTime оператора:

 ActiveDocument.Range.Fields.Update
 

1

Я нашел возможное обходное решение ниже, если не реальный ответ на вопрос темы. Вчера первая строка ComputeStatistics ниже возвращала правильную сумму в 31 страницу, но сегодня она возвращает только 1.

Решение состоит в том, чтобы избавиться от Content и возвращается правильное количество страниц.

 Dim docНесколько как документ
Установите docMultiple = ActiveDocument
lPageCount = docMultiple.Content.ComputeStatistics(wdStatisticPages) ' Возвращает 1
lPageCount = docMultiple.ComputeStatistics(wdStatisticPages) ' Возвращает правильный счетчик, 31
 

1

ActiveDocument.Range.Information(wdNumberOfPagesInDocument)

Это работает каждый раз для меня. Он возвращает общее количество физических страниц в слове.

1

Я использовал это из Excel он надежно работал примерно с 20 документами ни один из них не был длиннее 20 страниц, но некоторые были довольно сложными с изображениями и разрывами страниц и т. д.

 Sub GetlastPageFromInsideExcel()
Установите wD = CreateObject("Word.Application")
Установите myDoc = wD. Documents.Open("C:\Temp\mydocument.docx")
myDoc.Characters.Last.Select 'переместить в конец документа
wD.Selection.Collapse ' свернуть выделение в конце
lastPage = wD.Selection.Information(wdActiveEndPageNumber)
mydoc.close
wd.выйти
Установите wD = Ничего
Конец сабвуфера
 

Одна из проблем, с которой я столкнулся при получении «ComputeStatistics» для возврата правильного количества страниц, заключалась в том, что я часто работаю в представлении «Web Layout» в Word. Всякий раз, когда вы запускаете Word, он возвращается к последнему использовавшемуся режиму просмотра. Если Word оставался в режиме «Веб-макета», «ComputeStatistics» возвращал количество страниц «1» для всех файлов, обработанных сценарием. Как только я специально установил вид «Макет печати», я получил правильное количество страниц.

Например:

 $MSWord.activewindow.view.type = 3 # 3 — «wdPrintView», 6 — «wdWebView»
$Pages = $mydoc.ComputeStatistics(2) # 2 — это 'wdStatisticPages'
 

Вы можете использовать Pages-Object и его свойства, такие как Count. Работает отлично 😉

Dim objPages As Pages Set objPage = ActiveDocument.ActiveWindow.Panes(1).Pages

QuantityOfPages = ActiveDocument.ActiveWindow.Panes(1).Pages.Count

1

 Dim wordapp как объект
Установите wordapp = CreateObject("Word.Application")
Затемнить документ как объект
Установите doc = wordapp.Documents.Open(oFile.Path)
Dim pagesСчитать как целое
pagesCount = doc.Content.Information(4) 'wdNumberOfPagesInDocument
doc.Закрыть Ложь
Установить документ = Ничего
 

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Как использовать разные верхние и нижние колонтитулы в одном документе Word

Знаете ли вы, что в документе Word можно использовать разные верхние и нижние колонтитулы? Мы покажем вам, как на Windows, Mac и в Интернете.

Верхние и нижние колонтитулы идеально подходят для размещения номеров страниц, заголовков документов и даже логотипа вашей компании. По умолчанию верхний и нижний колонтитулы на каждой странице в Microsoft Word одинаковы. Но это не обязательно.

Возможно, вы хотите, чтобы эти области в документе немного отличались. Возможно, вы захотите, чтобы номера страниц чередовались слева и справа на каждой второй странице. Или у вас может быть титульная страница для первой страницы, и вы вообще не хотите использовать верхний или нижний колонтитул.

Этот процесс одинаков в Word для Windows и Mac, но немного отличается в Word для Интернета. Итак, мы начнем с того, как настроить различные верхние и нижние колонтитулы в документе Word на рабочем столе.

Верхние и нижние колонтитулы в Word Desktop

Откройте документ Word в Windows или Mac и выполните следующие действия, чтобы назначить верхние и нижние колонтитулы.

  1. Дважды щелкните область верхнего или нижнего колонтитула страницы.
  2. В разделе «Параметры» на ленте установите флажок для Разные нечетные и четные страницы , Разные первые страницы или оба варианта.
  3. Вы увидите, что индикатор слева для Верхний или Нижний колонтитул изменится на Нечетный/Четный/Верхний колонтитул первой страницы или Нечетный/Четный/Нижний колонтитул первой страницы.
  4. Введите верхний или нижний колонтитул для этой страницы. Затем перейдите на следующую страницу и введите верхний или нижний колонтитул там.

Нажмите Закрыть верхний и нижний колонтитулы в правой части ленты или дважды щелкните текст документа, чтобы вернуться к редактированию документа.

Вы можете видеть верхние и нижние колонтитулы в документе во время работы над ним. Они просто кажутся затемненными.

Верхние и нижние колонтитулы в Word в Интернете

Войдите в свою учетную запись Microsoft в Word в Интернете и откройте документ. Затем выполните следующие действия, чтобы вставить верхние и нижние колонтитулы.

  1. Перейдите на вкладку Вставка и щелкните Верхний и нижний колонтитулы .
  2. В правой части документа щелкните стрелку раскрывающегося списка Параметры .
  3. Выберите, как вы хотите настроить верхние и нижние колонтитулы. Вы можете выбрать «Разные первые страницы», «Разные четные и нечетные страницы» или «Разные первые, четные и нечетные страницы».
  4. Затем вы увидите области верхнего и нижнего колонтитула с вкладками для первой, четной и нечетной страниц, в зависимости от выбранного выше параметра.
  5. Введите в верхний или нижний колонтитул то, что вы хотите для первой, четной или нечетной страницы, выберите следующую вкладку и введите то, что вы хотите для этих страниц.

Щелкните внутри серой области страницы, когда закончите и захотите продолжить работу над основной частью документа.

Просмотр верхних и нижних колонтитулов в Word Online

Вернувшись к редактированию документа, вы не увидите верхних и нижних колонтитулов.

Ваш комментарий будет первым

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *