Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2009, 15:44   #1
Иванов2
Новичок
Джуниор
 
Регистрация: 28.09.2009
Сообщений: 2
По умолчанию Как выделить несколько страниц текста

Первую страницу выделяю так:
ActiveDocument.Sections(1).Range.Se lect

Вторую так:
ActiveDocument.Sections(2).Range.Se lect

А как выделить эти две страницы сразу?
Может кто знает, как сделать. Искал, но ничего путного не нашел

Мне нужно размножить эти две страницы

Последний раз редактировалось Иванов2; 28.09.2009 в 15:49.
Иванов2 вне форума Ответить с цитированием
Старый 28.09.2009, 18:05   #2
Иванов2
Новичок
Джуниор
 
Регистрация: 28.09.2009
Сообщений: 2
По умолчанию

Что-то никто не хочет на такие простые вопросы отвечать. Все равно спасибо вашему форуму, подсказку нашел здесь (на форуме).

Ну и вот как это решается, целый день копал:

With ActiveDocument
.Range(.Sections(1).Range.Start, .Sections(2).Range.End).Select
End With

Последний раз редактировалось Иванов2; 28.09.2009 в 18:11.
Иванов2 вне форума Ответить с цитированием
Старый 28.09.2009, 21:40   #3
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Я просто не успел.
Я так понял, что у вас по одной странице в разделе, вот вы и выделяете их пораздельно. Со своей стороны предложу универсальный макрос выделения нужного количества страниц, начиная с той, на которой находится курсор:
Код:
'Выделение нужного количества страниц, начиная с текущей
Sub SelectPages()
  Dim oStartPage As Range
  Dim oEndPage As Range
  Dim nStartPageNum As Long
  Dim nPagesCount As Long
  Dim nEndPageNum As Long
  
  'Номер страницы, на которой находится курсор
  nStartPageNum = Selection.Information(wdActiveEndPageNumber)
  'Количество страниц в документе
  nPagesCount = ActiveDocument.Range.ComputeStatistics(wdStatisticPages)
  
  'если курсор на последней странице, то выделяем только ее
  If nStartPageNum = nPagesCount Then
    Set oStartPage = ActiveDocument.Range.GoTo(wdGoToPage, wdGoToLast)
    ActiveDocument.Range(oStartPage.Start, ActiveDocument.Range.End).Select
    Exit Sub
  End If
  
  'Сколько страниц выделять
  Dim sInput As String
  sInput = InputBox("Сколько страниц выделить, начиная с текущей? Укажите число не больше " & nPagesCount - nStartPageNum + 1, "Выделение нескольких страниц", nPagesCount - nStartPageNum + 1)
  If Len(sInput) > 0 Then nEndPageNum = CLng(sInput) Else Exit Sub
  
  If nEndPageNum <= 0 Or nEndPageNum + nStartPageNum > nPagesCount+1 Then Exit Sub
  'Начало первой страницы для выделения
  Set oStartPage = ActiveDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, nStartPageNum)
  'Конец последней страницы для выделения
  Set oEndPage = ActiveDocument.Range.GoTo(wdGoToPage, wdGoToAbsolute, nStartPageNum + nEndPageNum)  '.GoToNext(wdGoToPage)
  'Выделяем указанный диапазон документа
  ActiveDocument.Range(oStartPage.Start, IIf(nStartPageNum + nEndPageNum = nPagesCount + 1, ActiveDocument.Range.End, oEndPage.End)).Select
End Sub
Думаю, что этот пример достаточно иллюстрирует принцип работы со страницами. Хотя, есть еще один метод…
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 28.09.2009 в 23:53. Причина: Доработал код
viter.alex вне форума Ответить с цитированием
Старый 28.09.2009, 21:59   #4
БуреВестник
Пользователь
 
Регистрация: 19.09.2009
Сообщений: 69
По умолчанию

Выделить несколько страниц текста может только Витер, потому что в VBA отсутствует объект Страница. Её нужно создавать хитрыми способами с помощью объекта Range.
БуреВестник вне форума Ответить с цитированием
Старый 28.09.2009, 22:24   #5
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Еще год назад я думал примерно также, но, подумав, понял, что в программном объекте, представляющем страницу, нет надобности. Это человек воспринимает текст постранично, а программе удобнее это делать через диапазоны, задаваемые числами.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделить дату и номер договора из текста S_M Microsoft Office Excel 6 04.09.2009 17:46
Как выделить несколько листов сразу? frantic150 Microsoft Office Excel 3 25.06.2009 01:25