Sub ShowViewPageNo()
ActiveDocument.Repaginate
varTotalPages = Selection.Information(wdNumberOfPagesInDocument)
varVertScrollPercent = ActiveDocument.ActiveWindow _
.VerticalPercentScrolled
varViewPage = Int((varVertScrollPercent / 100) * varTotalPages) + 1
varIPPage = Selection.Information(wdActiveEndPageNumber)
MsgBox "Your insertion point ison page [" & varIPPage & "]." + _
"You are looking at page [" & varViewPage & "].""
End Sub
Here's the translation of the text into Russian:
Макрос VBA, называемый ShowViewPageNo, предназначен для отображения текущего номера страницы документа Word и страницы, на которой находится курсор (вставка). Вот разбивка кода:
ActiveDocument.Repaginate: эта строка перерасчитывает номера страниц в активном документе.
varTotalPages = Selection.Information(wdNumberOfPagesInDocument): эта строка получает общее количество страниц в документе с помощью метода Selection.Information с константой wdNumberOfPagesInDocument.
varVertScrollPercent = ActiveDocument.ActiveWindow.VerticalPercentScrolled: эта строка получает текущий процент скроллинга вертикальной панели активного окна.
varViewPage = Int((varVertScrollPercent / 100) * varTotalPages) + 1: эта строка рассчитывает текущую страницу просмотра, умножая процент скроллинга на общее количество страниц, беря целую часть (используя функцию Int) и добавляя 1 для получения правильного номера страницы.
varIPPage = Selection.Information(wdActiveEndPageNumber): эта строка получает номер страницы, на которой находится курсор, с помощью метода Selection.Information с константой wdActiveEndPageNumber.
MsgBox "Ваш курсор находится на странице [" & varIPPage & "]. Вы смотрите на странице [" & varViewPage & "].": эта строка отображает сообщение, показывающее текущие номера страниц для обоих курсора и просмотра.
Альтернативное решение:
Вместо использования процента скроллинга вертикальной панели можно использовать метод Selection.Information(wdFirstCharacterLineNumber) для получения номера строки, на которой находится курсор. Затем можно рассчитать номер страницы на основе общего количества страниц в документе.
Здесь приведен обновленный вариант кода:
Sub ShowViewPageNo()
ActiveDocument.Repaginate
varTotalPages = Selection.Information(wdNumberOfPagesInDocument)
varIPLine = Selection.Information(wdFirstCharacterLineNumber)
varIPPage = Int(varIPLine / 66) + 1 'предполагая 66 строк на странице
MsgBox "Ваш курсор находится на странице [" & varIPPage & "]."
End Sub
Обратите внимание, что это альтернативное решение предполагает стандартные 66 строки на страницу в документе Word. Вам может потребоваться коррекция этого значения в зависимости от вашего конкретного документа и форматирования.
В статье описывается макрос Visual Basic для Microsoft Word, который выводит информацию о текущей странице и местоположении курсора на странице.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.