Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Выделение всего содержимого страницы с указанным номером
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 7 ]
1 28.04.2010 17:10:45
- andrkar
- Модератор
- Неактивен
- Откуда: Томск
- Зарегистрирован: 10.03.2010
- Сообщений: 431
- Поблагодарили: 26
Тема: Выделение всего содержимого страницы с указанным номером
Нужна помощь!
Необходимо выделить (а затем вырезать в буфер обмена, а лучше в какую-то переменную) содержимое страницы с указанным номером.
Я пока реализовал следующий механизм.
1) если страница в документе одна, то просто выделить от начала документа до конца документа
2) если страниц больше на одну, чем номер требуемой страницы, то переход к началу страницы, следующей за требуемой, вставка там какого-нибудь символа, например знака бесконечности, потом переход к началу требуемой страницы и расширение выделения до символа бесконечности.
3) вырезание в буфер выделенного
4) переход к месту вставки
5) вставка содержимого буфера
6) очистка буфера
7) удаление знака бесконечности
Все вроде работает, но если на требуемой странице находится разрыв страницы или раздела (со следующей страницы), то он тоже копируется в буфер.
можно ли те же самые действия провести без использования Selection, или хотя бы — как провести проверку выделенной страницы, и если там есть разрыв страницы или раздела, убрать его из выделения (как я понимаю, разрыв в любом случае будет последним элементом выделения)?
2 Ответ от viter.alex 28.04.2010 18:19:26
- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
Re: Выделение всего содержимого страницы с указанным номером
Если текст переносится в пределах одного документа, то можно обойтись и без буфера обмена, как показано в примере после диезов. Всё, что до диезов, это выделение нужной страницы и отсечение разрывов
Sub SelectPage()
Dim PageNum As Long
PageNum = InputBox("Введите номер страницы")
With Selection
'Переход к указанной таблице
.GoTo wdGoToPage, wdGoToAbsolute, PageNum
'Выбор страницы, на которой выделение
.Bookmarks("page").Select
'Сжимаем выделение, если последний _
или предпоследний символ это разрыв
If Asc(.Characters.Last) = 12 Then
.MoveLeft wdCharacter, 1, wdExtend
End If
If Asc(.Characters.Last.Previous.Text) = 12 Then
.MoveLeft wdCharacter, 2, wdExtend
End If
'####################################
'Берём выделение в закладку
.Bookmarks.Add "TempBm", .Range
'Переход в конец документа
.EndKey wdStory
'Добавляем поле, ссылающееся на эту закладку
With .Fields.Add(.Range, wdFieldRef, "TempBm", False)
.Update 'Обновляем
.Unlink 'Разрываем связь поля
End With
ActiveDocument.Bookmarks("TempBm").Delete 'Удаляем закладку
End With
End Sub
Лучше день потерять — потом за пять минут долететь!
3 Ответ от andrkar 28.04.2010 19:10:17
- andrkar
- Модератор
- Неактивен
- Откуда: Томск
- Зарегистрирован: 10.03.2010
- Сообщений: 431
- Поблагодарили: 26
Re: Выделение всего содержимого страницы с указанным номером
Именно то, что нужно!!! Ни в жизни бы сам не догадался бы, пока не начал плотно изучать закладки, что можно нужную страницу можно выделить именно вот так:
.Bookmarks("page").Select
Спасибо огромное! Осталось только адаптировать код под задачу, все необходимое для этого в приведенном вами примере есть! Так как мне необходимо перемещаться содержимое как миним трех страниц, то сделаю эту процедуру с праметрами — номер страницы, содержимое которой нужно «вырезать», и номер страницы, в начало которой нужно вставить «вырезанное»…
Протестировал.. Выделенный фрагмент не удаляется со своего места, а создается его клон. А нужно, чтобы удалялось Использую первую часть, а дальше с буфером обмена. Благо процедуры его очистки уже готовы:)
Отредактировано andrkar (28.04.2010 19:32:47)
4 Ответ от viter.alex 28.04.2010 21:10:14
- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
Re: Выделение всего содержимого страницы с указанным номером
andrkar пишет:
Выделенный фрагмент не удаляется со своего места, а создается его клон
Изменить нужно всего лишь одну строчку:
ActiveDocument.Bookmarks("TempBm").Range.Delete
Лучше день потерять — потом за пять минут долететь!
5 Ответ от andrkar 28.04.2010 23:37:09
- andrkar
- Модератор
- Неактивен
- Откуда: Томск
- Зарегистрирован: 10.03.2010
- Сообщений: 431
- Поблагодарили: 26
Re: Выделение всего содержимого страницы с указанным номером
Вот так реализовал для своих целей:
Sub SelectAndCutPage(PageForCut, PageForPaste As Long)
'Выделение и вырезание содержимого необходимой страницы и вставка его на указанную
'идея viter.alex
With Selection
'Переход к указанной странице
.GoTo wdGoToPage, wdGoToAbsolute, PageForCut
'Выбор страницы, на которой выделение
.Bookmarks("page").Select
'Сжимаем выделение, если последний _
или предпоследний символ это разрыв
If Asc(.Characters.Last) = 12 Then
.MoveLeft wdCharacter, 1, wdExtend
End If
If Asc(.Characters.Last.Previous.Text) = 12 Then
.MoveLeft wdCharacter, 2, wdExtend
End If
.Cut
.MoveRight wdCharacter, 1, wdExtend
If Asc(.Characters.Last) = 12 Then
.Delete unit:=wdCharacter, Count:=1
End If
.GoTo wdGoToPage, wdGoToAbsolute, PageForPaste
End With
End Sub
После применения данной процедуры и отладки удалил строк 50 лишнего кода! Еще раз спасибо. Можно тему считать закрытой
6 Ответ от viter.alex 29.04.2010 06:50:54
- viter.alex
- Модератор
- Неактивен
- Откуда: Харьков, Украина
- Зарегистрирован: 21.12.2009
- Сообщений: 884
- Поблагодарили: 140
Re: Выделение всего содержимого страницы с указанным номером
А ты уверен, что после вырезания, да ещё и удаления разрыва, номера страниц не сместятся?
Лучше день потерять — потом за пять минут долететь!
7 Ответ от andrkar 29.04.2010 15:43:14
- andrkar
- Модератор
- Неактивен
- Откуда: Томск
- Зарегистрирован: 10.03.2010
- Сообщений: 431
- Поблагодарили: 26
Re: Выделение всего содержимого страницы с указанным номером
уверен.. Это нужно для первых двух страниц. Причем после вырезания я вставляю разрыв строки и разрыв раздела.. Как раз то, что удаляется.. Скоро увидите, для чего это было нужно. Совсем немного осталось дописать. Всего пару процедур..
Сообщений [ 7 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Похожие темы
- Количество страниц и выделение текста страницы в активном документе
- проблема с колонтитулами и номером страниц
- Макрос для замены содержимого ссылок
- Как убрать прозрачность содержимого колонтитулов в Word?
- Перенос содержимого структуры на другой лист
- Можно ли вычислить ячейку по Range части ее содержимого?
- «Импорт» содержимого в ЭУС [раскрывающийся список]/[поле со списком]
- Вставка содержимого файла или таблицы в определенное место документа
Выделение всего содержимого страницы с указанным номером
Если вы ищите информацию по самому мощному редактору в мире Microsoft Word в сети, жаловаться на недостаток документов, литературы, различных ссылок и советов придется вряд ли. На портале о Microsoft Office Word вы узнаете про: как открыть документ сохраненный с макромами.
Только в разбросанном виде все это жутко неудобно. Гораздо результативнее общаться на специальных форумах. Наш сайт о Microsoft Office Word даст ответ про: тест word 2007.
Это удобнее еще и тем, что на свою проблему вы получите отклики так сказать в развитии, можно будет обсудить, что не получается, что именно не устраивает. Наш сайт о Microsoft Office Word даст ответ про: как нарисовать рамку в ворде lkz rehcjdjq.
Для русскоязычных пользователей Microsoft Word можно посоветовать форум Ворд Эксперт.
На нем представлены как готовые ответы на вопросы и наработки опытных пользователей в разделах «часто задаваемые вопросы» и «готовые решения», так и обсуждения работы с документами и настройками программы в разных версиях нашего любимого Microsoft Word. На портале о Microsoft Office Word вы узнаете про: как выставить сноску в ворде.
Это разделы «Настройка и Форматирование», а также «Автоматизация», где вас научат, как сделать работу с программой максимально оптимальной и быстрой, написав соответствующие макросы. Наш сайт о Microsoft Office Word даст ответ про: открыть ворд 2007 в 2003.
Если вы не хотите сами разбираться с макросами или ломать голову над той, либо иной, возникшей в работе проблемой, то в «Заявках на разработку» можете оставить заказ, форумчане вам помогут. На портале о Microsoft Office Word вы узнаете про: не могу поставить обтекание картинки текстом в ворде ошибка.
Форум Ворд Эксперт — это страничка, которую стоит запомнить, потому что она может пригодиться в любой момент. Наш сайт о Microsoft Office Word даст ответ про: стандарты оформления документов список.
Форум и сайт очень разумно устроены, а все пожелания вы можете высказать в соответствующем разделе.
Модератор:Naeel Maqsudov
-
Иванов
- Сообщения:7
- Зарегистрирован:28 сен 2009, 09:29
Добрый день, форумчане!
Одну страницу открытого документа можно выделить так:
ActiveDocument.Sections(НомерСтраницы).Range.Select
А не подскажете, как выделить одновременно, две страницы (текущую и следующую) ?
-
Busine2009
- Сообщения:322
- Зарегистрирован:18 июл 2009, 15:34
- Контактная информация:
30 сен 2009, 02:56
Иванов
в VBA нет объекта Страница.
Здесь
Код: Выделить всё
ActiveDocument.Sections(НомерСтраницы).Range.Selec t
Sections(НомерСтраницы) — не номер страницы, а номер раздела. Выделить несколько страниц сложно простому смертному: нужен опыт и знание объекта Range.
-
Иванов
- Сообщения:7
- Зарегистрирован:28 сен 2009, 09:29
30 сен 2009, 09:37
Busine2009 писал(а):Иванов
в VBA нет объекта Страница.
ЗдесьКод: Выделить всё
ActiveDocument.Sections(НомерСтраницы).Range.Selec t
Sections(НомерСтраницы) — не номер страницы, а номер раздела. Выделить несколько страниц сложно простому смертному: нужен опыт и знание объекта Range.
Тогда я не простой смертный. Текст разбил постранично на разделы и сделал так:
With ActiveDocument
.Range(.Sections(ТекСтр).Range.Start, .Sections(ТекСтр + 1).Range.End).Select
End With
-
Busine2009
- Сообщения:322
- Зарегистрирован:18 июл 2009, 15:34
- Контактная информация:
30 сен 2009, 20:17
Это ненормально, чтобы каждая страница была разделом, когда этого не требует здравый смысл, так что ты не прав, но если тебе так удобно, то это твоё право.
-
Иванов
- Сообщения:7
- Зарегистрирован:28 сен 2009, 09:29
01 окт 2009, 10:03
У меня стандартные документы, имеющие конкретный текст на страницах. Что бы текст в документе не расползался при наборе текста на предыдущих, я разбил их на разделы.
Sub макрос()
Dim PageNumber1 As Long, PageNumber2 As Long
Dim start_ As Long, end_ As Long
‘1. Здесь запишите в переменные номера страниц, которые нужно выделить.
PageNumber1 = InputBox(«Номер начальной страницы:»)
PageNumber2 = InputBox(«Номер конечной страницы:»)
‘2. Проверка, что указанная начальная страница существует.
If ActiveDocument.ComputeStatistics(wdStatisticPages) < PageNumber1 Then
MsgBox «В файле нет указанной начальной страницы.», vbExclamation
Exit Sub
End If
‘3. Проверка, что указанная конечная страница существует.
If ActiveDocument.ComputeStatistics(wdStatisticPages) < PageNumber2 Then
MsgBox «В файле нет указанной конечной страницы.», vbExclamation
Exit Sub
End If
‘4. Запись в переменную начала начальной страницы.
start_ = ActiveDocument.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=PageNumber1).Start
‘5. Запись в переменную конца конечной страницы.
‘ Нужно в переменную записать начало следующей страницы после указанной конечной.
‘ Если конечная страница — это последняя страница, то запишем в переменную конец файла.
If ActiveDocument.ComputeStatistics(wdStatisticPages) = PageNumber2 Then
end_ = ActiveDocument.Range.End
Else
end_ = ActiveDocument.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=PageNumber2 + 1).Start
End If
‘6. Выделение указанных страниц.
ActiveDocument.Range(start_, end_).Select
End Sub
[свернуть]
Если вы хотите выбрать любые диапазоны страниц в документе Word, сколькими способами вы можете это сделать? Теперь я предлагаю вам несколько уловок для выбора диапазона страниц в Microsoft Word.
Выберите диапазон страниц, удерживая Shift в Word
Выберите диапазон страниц с помощью VBA
Выберите диапазон страниц с Kutools for Word
Выберите диапазон страниц, удерживая Shift в Word
Нажмите в начале страницы и удерживайте Shift, прокрутите до конца страницы и щелкните в конце содержимого этой страницы. Теперь страницы выбраны.
Выберите диапазон страниц с помощью VBA
1, нажмите Alt + F11 для открытия Microsoft Visual Basic для приложенийокно s;
2. Нажмите Модули от Вставить вкладку, скопируйте и вставьте следующий код VBA в Модули окно;
Код VBA: выберите диапазон страниц из документа Word:
Sub selectpages ()
Dim rgePages As Range
Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=2
Set rgePages = Selection.Range
Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=6
rgePages.End = Selection.Bookmarks("Page").Range.End
rgePages.Select
End Sub
3, нажмите F5 для запуска этого кода сразу выбираются страницы со страницы 2 по страницу 6.
Внимание: Здесь вы можете изменить Количество: = 2 и Количество: = 6 чтобы удовлетворить ваши потребности. В этом коде VBA мы выбираем диапазон страниц от страницы 2 до страницы 6.
Выберите диапазон страниц с Kutools for Word
Работы С Нами Kutools for WordАвтора Выбрать страницы Утилита, вы можете быстро выбрать любые диапазоны страниц в документе. Всего один щелчок мыши поможет вам завершить выбор страницы.
1. Нажмите Кутулс > Разделы > Выбрать страницы, см. снимок экрана:
2. Во всплывающем диалоговом окне вы можете указать диапазон страниц, введя число в поле под Выберите страницы в соответствии с разделом диапазона. Или вы можете выбрать определенные страницы по своему усмотрению в Выбрать страницы в соответствии с выбором список. Смотрите скриншот:
3. Нажмите OK or Применить кнопку, чтобы выбрать желаемые страницы.
Нажмите, чтобы скачать Kutools for Word и бесплатная пробная версия прямо сейчас!
Демонстрация: выбор диапазона страниц из документа Word
Относительные статьи:
- Выбрать текущие страницы в Word
- Выбрать определенные страницы в Word
Рекомендуемые инструменты для повышения производительности Word
Kutools For Word — Более 100 расширенных функций для Word, сэкономьте 50% времени
- Сложные и повторяющиеся операции можно производить разово за секунды.
- Вставляйте сразу несколько изображений из папок в документ Word.
- Объединяйте и объединяйте несколько файлов Word из папок в одну в желаемом порядке.
- Разделите текущий документ на отдельные документы в соответствии с заголовком, разрывом раздела или другими критериями.
- Преобразование файлов между Doc и Docx, Docx и PDF, набор инструментов для общих преобразований и выбора и т. Д.
Комментарии (0)
Оценок пока нет. Оцените первым!
- Иванов
- Начинающий
- Сообщения: 1
- Зарегистрирован: 28.09.2009 (Пн) 9:07
Выделить несколько страниц подряд в Word
Одну страницу открытого документа выделяем так:
ActiveDocument.Sections(НомерСтраницы).Range.Select
А как выделить две подряд начиная с текущей?
- GDK
- Обычный пользователь
- Сообщения: 80
- Зарегистрирован: 23.10.2008 (Чт) 16:15
Re: Выделить несколько страниц подряд в Word
GDK » 05.10.2009 (Пн) 16:36
Можно определить диапазон для начальной страницы и взять его св-во старт, определить диапазон для конечной стр. и взять энд, создать новый диапазон на основе этих данных и выделить его.
Вернуться в VBA
Кто сейчас на конференции
Сейчас этот форум просматривают: Yandex-бот и гости: 2