Вход/Регистрация
VBA для чайников
вернуться

Каммингс Стив

Шрифт:

Set deRange = Selection.Range

Selection.Move Unit := wdParagraph, Count := 3

DeRange.Case = wdLowerCase

Определение диапазонов с помощью метода Range

Если существующие объекты не содержат текст, с которым вы хотите работать, создайте собственный объект Range. В любом открытом документе вы сможете определить столько объектов Range, сколько вам нужно. При этом используется метод Range документа, который требует от вас указания начальной и конечной точек диапазона в терминах расположения символа в документе. Например, ознакомьтесь со следующим примером:

ActiveDocument.Range(Start:= 10, End:=2 0)

Приведенное выше выражение представляет собой объектную ссылку на диапазон, который начинается с 11-го символа и заканчивается 20-м символом. Значение расположения символа на самом деле означает место слева от данного символа. Например, значение, равное 0, соответствует первому символу в документе, а значение 10 указывает на точку между 10-м и 31-м символами. Word считает все символы в документе, включая скрытые и непечатаемые знаки.

Для создания диапазона, который станет всего лишь местом расположения и не содержит никакого текста, присвойте начальному и конечному значениям, определяющим диапазон, одно и то же число. Для включения в объект Range всего документа используйте метод Range этого документа без каких-либо аргументов или же используйте свойство Content документа.

Объект Range создать совсем несложно (если вам известны положения начального и конечного символов, которые вы решили включить в диапазон).

Проблема возникает в том случае, когда вам необходимо работать с произвольным количеством символов в произвольном месте документа. Чаще всего вам необходимо работать с текстом в определенной части документа. Вы можете начать диапазон с существующей закладки, с начала выделенной области или с определенного слова или фразы, о наличии которых в документе вам точно известно.

Для определения диапазона, базирующегося на одном из подобных критериев, используйте свойства Start или End объекта Selection, Range или Bookmark, чтобы определить месторасположение в документе интересующего вас символа. Если вам необходимо создать состоящий из десяти символов диапазон, который будет начинаться с вкладки Forget MeNot, вам пригодится следующая инструкция;

With ActiveDocument

Set myEkMark = .Bookmarks("ForgretMeNot")

Set homeOnTheRange = _

.Fange( Start := myBkMark, End := myBkMark + 10)

End With

Ниже приведен еще один пример, иллюстрирующий использование свойства Range для поиска абзаца, определения в нем некоторого слова, а также создания нового диапазона, начинающегося с этого слова. В данном случае аргумент End опущен, поэтому диапазон начинается с указанного слова и продолжается до окончания документа:

With ActiveDocument

Set firstWord = .Paragraphs(160).Range.Words(3)

Set RangeTop = .Range( Start := first Word.Start )

End With

В разделе "Поиск и замена текста с помощью VBA в Word", дальше в настоящей главе, я покажу, что использование ключевого слова Find совместно с диапазоном или выделенной областью определяет объект, который будет содержать только найденный текст. После того как инструкция Find найдет в диапазоне или выделенной области фразу, свойства Start и End того же диапазона или выделенной области теперь будут указывать на начало и конец найденного текста.

Работа с текстом в Word VBA

Объекты Range и Selection являются отправными точками для практически любых операций, которые вы сможете выполнять с текстом с помощью Word VBA. Некоторые из этих действий можно применять к документам в целом, но в общем случае вам необходим диапазон или выделенная область, прежде чем вносить изменения.

У объектов Range и Selection достаточно много общего, но есть и несколько ключевых отличий. Оба объекта представляют непрерывные последовательности символов, над которыми вы сможете выполнять различные операции. Оба объекта имеют много общих свойств и методов. Однако некоторые свойства и методы уникальны для выделенных областей, а другие - для диапазонов. Значительные различия состоят и в том, что объект Selection соответствует выделению в области окна: тексту, графическому изображению или любому другому объекту, в то время как объекты Range существуют независимо от выделенной области и всегда содержат текст.

Используйте объект Selection в том случае, если ваша процедура зависит от пользователя, например, он должен указать текст, с которым будут проведены определенные действия, или в том случае, если вам необходимо показать пользователю, какой именно текст будет изменен. В других ситуациях намного лучше подходят объекты Range. Они обеспечивают большую скорость выполнения программ и меньше отпугивают пользователя: Word обновляет содержимое экрана при каждом изменении содержимого выделенной области, а при изменении диапазона содержимое экрана не обновляется. Кроме того, изменения диапазонов не отражаются на выделенных областях, созданных пользователем.

  • Читать дальше
  • 1
  • ...
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: