Объект Word Range — работа с текстом в ворде, выбор

Объект Word Range — работа с текстом в ворде, выбор Объектная модель Microsoft Word

Здравствуйте дорогие читатели блога scriptcoding.ru. Сегодня мы рассмотрим работу с классом Range, который относится к объектном модели Word. Данный класс отвечает за работу с текстом в ворде, а точнее, за его выбор.

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

Получить доступ к объекту можно несколькими способами:

Одноименный метод объекта Document – данный метод принимает два необязательных параметра, которые задают начальное и конечное значение выбора при работе с текстом в Word. Если вызвать метод без параметров, то будет выбрано содержимое всего документа, например:

' Выбираем весь текст
set oRange = oDoc(1).Range()
'Делаем шрифт жирным
oRange.Bold = true

Или такой вариант:

'Выбираем первые 10 символов
set oRange = oDoc(1).Range(0,10)

Одноименное свойство – данное свойство предусмотрено для большинства классов Word (Bookmark, Selection, Table, Row, Cell, Paragraph и так далее). В данном случае мы получаем Range для заданного класса, автоматически произойдет выбор содержимого данного класса (абзац, выделение, закладка и так далее).

Метод SetRange() – Данный метод предоставляет сам объект Range, и он позволяет переопределить выбор текста в ворде, например:

set oRange1 = oDoc(1).Range()
oRange1.SetRange 1,10
oRange1.Bold = true

Класс Range – выбираем текст в ворде

Свойства – работа с текстом в ворде

Выбираем текст в ворде

Свойства, которые позволяет задать или получить значение константы:

Case– Регистр текста в ворд, константа WdCharacterCase:

  • wdNextCase — -1 – Как в предложении
  • wdLowerCase — 0 — Нижний регистр
  • wdUpperCase — 1 — Верхний регистр
  • wdTitleWord — 2 – Начало слова с заглавной буквы
  • wdTitleSentence — 4 — в режиме ввода предложения
  • wdToggleCase — 5 – Инвертировать регистр

CharacterWidth — Ширина символов, константа WdCharacterWidth:

  • wdWidthFullWidth — 7 – Полная ширина.
  • wdWidthHalfWidth — 6 – Половина ширины (нормальный режим).

HorizontalInVertical– Расположение текста в ворде, константа WdHorizontalInVerticalType:

  • wdHorizontalInVerticalNone — 0 – Форматирование отсутствует
  • wdHorizontalInVerticalFitInLine — 1 – Горизонтальное направление
  • wdHorizontalInVerticalResizeLine — 2 – Вертикальное направление

Orientation— Направление ворд текста, константа WdTextOrientation:

  • wdTextOrientationHorizontal — 0 – Горизонтально, по умолчанию.
  • wdTextOrientationVerticalFarEast — 1 – Вертикально вниз от верхней части, справа налево.
  • wdTextOrientationUpward — 2 — Вверх под углом.
  • wdTextOrientationDownward — 3 – Вниз под углом.
  • wdTextOrientationHorizontalRotatedFarEast — 4 — Горизонтально, но справа налево (только для языков с данным типом письма).
  • wdTextOrientationVertical — 5 — Вертикально вниз от верхней части, слева направо.

HighlightColorIndex– Цвет выделения текста в ворде, константа WdColorIndex.

LanguageIDOther– Язык текста в ворд, константа, WdLanguageID.

Style– Стиль, константа WdBuiltinStyle.

Underline– Тип подчеркивания, константа WdUnderline.

работаем с текстами в word

Свойства, которые позволяют задать или получить логическое значение:

Bold– Делает шрифт жирным (true).

Italic— Делает шрифт курсивом (true).

GrammarChecked– Проверка грамматики.

LanguageDetected– Определение языка.

работаем с текстами в ворде

Прочие свойства (чтение и запись), только последнее доступно только для чтения.

Startи End– Начальная и конечная позиция для выбора.

FitTextWidth— Ширина текста в текущих единицах измерения.

ID— Имя идентификатора (строковое значение) для указанного диапазона.

Text– Позволяет вставить (в место, где находится курсор), заменить (выбранную область), или получить текст в ворде для заданного диапазона.

Information(type) — Информация об указанном диапазоне (параметр type содержит значение константы WdInformation. Только чтение.

Методы – работа с текстом в Word

обработка текста в ворде

CheckGrammar() — Начинает проверку орфографии и грамматики для указанного диапазона.

Set Range2 = Documents("MyDocument.doc").Sections(2).Range
Range2.CheckGrammar

CheckSynonyms() — Отображает диалоговое окно «Тезаурус«.

Collapse(Direction) — Убирает выделение.

Direction – Дополнительный параметр, который задает направление от позиции курсора. Может быть одним из следующих значений константы WdCollapseDirection: wdCollapseEnd — 0 или wdCollapseStart — 1. Значение по умолчанию wdCollapseStart.

ComputeStatistics(Statistic) – Позволяет получить статистику для заданного выбора. Параметр Statistic содержит значения константы WdStatistic.

Copy(), Delete(), Cut() – Копирование, удаление и вырезание выбранного диапазона.

Paste() – Вставка содержимого буфера обмена.

CopyAsPicture() – Копирование текста в ворде как изображения.

Select() – Выделение текущего выбора.

SetRange(Start, End) – Позволяет задать начальную и конечную позицию для выбора, вернет новый объект Range.

Relocate(Direction) — Переставляет местами абзацы в выбранном диапазоне.

Direction – Обязательный параметр, который задает направление, содержит значение константы WdRelocate:

  • wdRelocateDown — 1 — Ниже следующего видимого абзаца.
  • wdRelocateUp — 0 — Выше предыдущего видимого абзаца.

Методы с префиксом Insert…и Move… и метод ConvertToTable() используются также классом Selection, поэтому я не стал их описывать, просто ознакомьтесь со статьей «Объект Word Selection — выделение фрагмента текста в ворде, методы #1»

Ниже я привел два примера программного кода на языке VBScript и JScript, в них я просто выбираю каждый символ в тексте и задаю для него цвет выделения. Работа с текстами в Word. Причем так, что бы цвета периодически менялись.

Программный код на языке VBSCRIPT:

' ----------------------------------------------------------------------------
' Работа с текстом в ворде
' Выделение разными цветами
' Range1.vbs
' ----------------------------------------------------------------------------
Option Explicit
 
dim oWord, oDoc, oSel, i, oPars, MyText, oRange, j
 
Set oWord = CreateObject("Word.Application")
Set oDoc = oWord.Documents
oDoc.Add()
Set oSel = oWord.Selection
Set oPars = oSel.Paragraphs
oWord.Visible = True
 
MyText = "Работа с текстом в Word "
 
' Вставляем текст
For i=0 to 4
   oSel.TypeText MyText & MyText & MyText & MyText & MyText & MyText & MyText
   oSel.TypeParagraph
Next
 
' Создаем ссылку
' Заодно выбираем весь текст в ворде
set oRange = oDoc(1).Range()
i = 1:j = 0
 
' Обрабатываем каждый символ
Do While i <= oRange.End
   With oRange
      ' выбираем один символ
      .SetRange i, i+1
      ' если выбран последний цвет
      if j = 17 then
         j = 0
         ' Меняем цвет выделения
         .HighlightColorIndex = j
         j = j + 1
      else
         .HighlightColorIndex = j
         j = j + 1
      end if
      i = i + 1
   End With
Loop

Программный код на языке JSCRIPT:

// ----------------------------------------------------------------------------
// Работа с текстом в ворде
// Выделение разными цветами
// Range1.js
// ----------------------------------------------------------------------------
 
var oWord1, oDoc1, oSel1, oPars1, MyText1 = "Работа с текстом в Word. ", oRange1;
 
oWord1 = WScript.CreateObject("Word.Application");
oDoc1 = oWord1.Documents;
oDoc1.Add();
oSel1 = oWord1.Selection;
oPars1 = oSel1.Paragraphs;
oWord1.Visible = true;
 
// Вставляем текст
for (i=0; i<=4; i++){
    oSel1.TypeText(MyText1 + MyText1 + MyText1 + MyText1 + MyText1 + MyText1 + MyText1);
    oSel1.TypeParagraph();
}
 
// Создаем ссылку 
// Заодно выбираем весь текст в ворде
oRange1 = oDoc1(1).Range();
 
var i = 1, j = 0;
// Обрабатываем каждый символ
while (i <= oRange1.End){ 
    with(oRange1){
        // выбираем один символ
        SetRange(i, i+1);
        // если выбран последний цвет
        if (j == 17){ 
            j = 0;
            // Меняем цвет выделения
            HighlightColorIndex = j;
            j++;
        }else{
            HighlightColorIndex = j;
            j ++;
        }
        i++
    }
}

Хорошо, с программированием закончили, теперь можно дать некоторые пояснения. И так, оба примера работают с текстом в Word одинаково. Имена переменных практически идентичны, только для JSCRIPT я к имени переменных добавил 1. В самом начале происходит подключение основных классов для доступа к приложению Microsoft Word, создание нового документа — «Коллекция Documents«, делаем документ видимым. Далее в цикле FOR — «Урок 9 по JScript — оператор цикла for» и «Урок 6 по VBScript: Циклы for…next и for each…next» происходит работа с текстом в ворд, а именно – добавление несколько раз содержимого переменной MyText.

результат работы с текстом в ворде

Переменная oRange будет содержать ссылку н6а класс, используя цикл WHILE — «Урок 7 по VBScript: Циклы do…loop и while…wend» и «Урок 10 по JScript: Цикл while и do…while«, мы начинаем обрабатывать каждый символ и менять его цвет, естественно, что количество возможных цветов ограничено. Поэтому нам приходится дополнительно добавить переменные i и j. Ну и все, результат работы можно увидеть на рисунке выше.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий