Я делаю много изменений в документе Word, используя автоматизацию, а затем запускаю макрос VBA, который, помимо прочего, проверяет, что документ не превышает определенное количество страниц.Как я могу надежно получить количество страниц в документе Word?
Я использую ActiveDocument.Information(wdNumberOfPagesInDocument)
, чтобы получить количество страниц, но этот метод возвращает неверный результат. Я думаю, это потому, что Word еще не обновил разбиение на страницы документа, чтобы отразить изменения, которые я сделал.
ActiveDocument.ComputeStatistics(wdStatisticPages)
также страдает от той же проблемы.
Я пробовал придерживаться звонка ActiveDocument.Repaginate
, но это не имеет значения.
Мне посчастливилось добавить абзац в конец документа, а затем удалить его снова - но этот хак, похоже, больше не работает (я недавно перешел из Word 2003 в Word 2010).
Есть ли способ заставить Word на самом деле репатрировать и/или дождаться завершения полного заполнения?
оба метода, которые вы используете, являются правильными. возможно, вы должны дать ему время для пересчета/репаализации перед тестированием количества страниц? какие изменения вы делаете, что приводит к этой проблеме? –
У меня была аналогичная проблема (я не помню, какой тип, а не номера страниц, но что-то подобное), и я решил это, показывая окно приложения Word (оно было скрыто). – Voitcus
@KazJaw: Сколько времени, тем не менее :-) Изменения, которые я делаю, в основном добавляют/удаляют текст и удаляют строки таблицы. Однако документ имеет сложный макет. –