Статьи из блога
Макрос: определение номера текущей страницы
Алексей задал вопрос:
Как программно определить номер текущей страницы? Единственное, до чего я додумался - по проценту скробара. Но правильно ли это?
В VBA есть две константы, по которым можно определить номер текущей страницы:
- wdActiveEndPageNumber
- wdActiveEndAdjustedPageNumber
Первая константа wdActiveEndPageNumber используется тогда, когда в документе нумерация начинается с первого номера (нормальная нумерация), а вторая - wdActiveEndAdjustedPageNumber - если пользователь использует свою нумерацию документа (не с первого по порядку листа документа).
Как я полагаю, в случае Алексея нужно узнать номер текущей страницы, на которой находится курсор ввода и нумерация страниц правильная. Вот примерный код:
Sub currentPage() Dim pn As String pn = Selection.Information(wdActiveEndPageNumber) MsgBox pn End Sub
Рубрика: Вопрос-Ответ, Макросы
Метки: макросы | нумерация
Просмотров: 26924
Подписаться на комментарии по RSS
Версия для печати
Метки: макросы | нумерация
Просмотров: 26924
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Абзац с цветным фоном
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне в Word 2007
- Быстрая смена ориентации страниц документа
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрый ввод текста с помощью команды =rand()
- Ввод повторяющихся фрагментов текста в Word 2007
- Ввод часто повторяющихся фрагментов текста
- Вертикальное выравнивание текста
- Возможно ли запретить копирование текста из документа Word?
- Вопрос о работе с графиками (диаграммами) в Word
- Вопросы и ответы о гиперссылках в редакторе Word
Комментариев: 10
Подскажите, как можно реализовать следующую задачу:
В документе необходимо выделить определенный текст, который встречается 1 раз на одной странице. Затем определить номера страниц на которых находиться данный выделенный текст (нумерация с 1 страницы)и задать их на печать
Предлагаю такой вариант. Задаете текст для поиска и получаете распечатанные страницы, содержащие этот текст. Макрос будет работать вне зависимости от способа нумерации, заданной пользователем и даже в том случае, если искомый текст будет встречаться на странице несколько раз (на всякий случай)
Спасибо большое
А возможно ли полученный список отсортировать по алфавиту и таким образом выдать на печать. Дело в том что есть искомый текст "1" и где соответствует выдает на печать, но если есть искомый текст "2" и "3" то эти страницы нужно выдать на печать повторно таким образом чтобы 1 копия шла за другой. Т.е. если стандартно выдать на печать страницы 1,3,3 то выдаст страницу 3 - 2 раза подряд. Макрос выше я изменила чтобы такие страницы выводились повторно, но не выводит страницы по порядку. Попыталась использовать макрос, который выложен на этом сайте "Сортировка строки по алфавиту", но там идет не соответствие типов, как и ожидалось и как изменить этот момент, в голову не приходит
Тамара, попытайтесь сформулировать понятнее. При чем здесь сортировка по алфавиту?
Скажем так, допустим выполняется процедура PrintOnlyPagesWithFoundText. И когда начинаеться поиск текста, заполняется sPagesToPrint. То как я изменила процедуру в н.м. список может быть заполнен следующим образом:
1,3,4,5,6,1,4,
и нужно привести его к виду
1,1,3,4,4,5,6,
Вобщем необходимо чтобы листы выдавались на печать именно в последовательности 1,1,3,4,4,5,6, а не 1,3,4,5,6,1,4,
Конечно возможно есть более просто способ, но познания в этом у меня не большие
Что ж, ничего лучшего, чем сортировка, тут, видимо, не придумаешь.
Я предлагаю свою функцию, которая будет сортировать вашу строку по возрастанию:
Вставьте эти функции в один модуль с макросом, а в самом макросе, непосредственно перед печатью, поместите вызов
Сразу скажу, что процедура сортировки методом бинарного деления придумана не мной, а взята готовой с этого сайта: http://alglib.sources.ru/sorting/bininssort.php
Успехов!
Указывает на ошибку при обработке строки
GetSortedString = Join(arDbl, ",")
пишет ошибка при вызове процедуры либо аргумента
Правильно, нужно заменить arDbl на arStr, ведь для функции Join нужно указывать строковый массив.
Замену произведите только в этой строке. В макрос я изменения внес
а как написать макрос используя wdActiveEndAdjustedPageNumber для того что бы расставить нумерацию в верхнем колонтитуле, если я использую свою нумерацию?? Очень нужно)