Объект Word Selection — выделение текста, методы #2

Объект Word Selection — выделение текста, методы #2 Объектная модель Microsoft Word

Всем привет, с вами автор блога scriptcoding.ru. В этой статье мы рассмотрим методы объекта Word Selection, которые позволяют очистить материал от форматирования, преобразовать в таблицу, а также производить копирование, вставку и так далее. Помним, что данный класс отвечает за выделение текста в Word.

Методы класса Word.Selection – выделение текста в Word

Я приведу по два примера программного кода на языках JScript, VBScript и VBA. Хотя по сути, код под макрос (VBA) и сценарий VBScript особо не отличается. Для тех, кто забыл: для создания макроса в документе Microsoft Office нужно вызвать редактор Visual Basic for Application (комбинация клавиш Alt + F11), далее, добавить в проект новый модуль (макрос).

Методы с префиксом Clear… позволяют очистить выделенный материал от форматирования (абзацы, стили, символы и так далее):

ClearCharacterAllFormatting() — Все форматирование.

ClearCharacterDirectFormatting() — Форматирование знаков.

ClearCharacterStyle() — Форматирование знаков, применяемых через стили.

ClearFormatting() – Все форматирования (параграфы, стили и так далее).

ClearParagraphAllFormatting() — Форматирование абзаца.

ClearParagraphDirectFormatting() — Форматирование абзацев, применяемых вручную.

ClearParagraphStyle() — Форматирование абзацев, применяемых через стили.

Collapse(Direction) – Позволяет убрать выделение текста Word и переместить указатель в начало или конец. VBA Selection. Если параметры отсутствуют, то просто убирается выделение. Параметр Direction содержит значение константы WdCollapseDirection:

  • wdCollapseEnd — 0 – Указатель вконец
  • wdCollapseStart — 1 – Указатель вначале

ConvertToTable(Separator, NumRows, NumColumns, InitialColumnWidth, Format, ApplyBorders, ApplyShading, ApplyFont, ApplyColor, ApplyHeadingRows, ApplyLastRow, ApplyFirstColumn, ApplyLastColumn, AutoFit, AutoFitBehavior, DefaultTableBehavior) – Довольно мощный метод, который позволяет преобразовать выделенный Word текст в таблицу.

Separator — Символ-разделитель, может быть знаком или значением константы WdTableFieldSeparator:

  • wdSeparateByParagraphs — 0 — абзаца.
  • wdSeparateByTabs — 1 — табуляции.
  • wdSeparateByCommas — 2 — запятая.
  • wdSeparateByDefaultListSeparator — 3 — разделитель списка по умолчанию.

NumRows— Количество строк.

NumColumns— Количество столбиков.

InitialColumnWidth— Начальная ширина каждого столбца, в пунктах.

Format– Определяет формат таблицы и содержит значение константы WdTableFormat.

ApplyBorders— TRUE — применять границы.

ApplyShading— TRUE — применить затенение.

ApplyFont— TRUE применять свойства шрифтов.

ApplyColor— TRUE применять цветовые свойства.

ApplyHeadingRows— TRUE — применить свойства заголовок-строка.

ApplyLastRow— TRUE — применить свойства последней строке.

ApplyFirstColumn— TRUE — применить свойства первого столбцов.

ApplyLastColumn— TRUE — применить свойства последнего столбца.

AutoFit— TRUE — уменьшить ширину столбцов таблицы как можно больше.

AutoFitBehavior — Устанавливает правила авто-подбора (если DefaultTableBehavior содержит значение wdWord8TableBehavior, то этот аргумент игнорируется, VBA Selection), содержит значения константы WdAutoFitBehavior:

  • wdAutoFitContent — 1 — автоматически размер
  • wdAutoFitFixed — 0 — фиксированный размер
  • wdAutoFitWindow — 2 — автоматический размер по ширине активного окна

DefaultTableBehavior— Значение, указывающее, следует ли автоматически изменять размер ячеек таблицы по содержимому. Selection VBA. Содержит значение константы WdDefaultTableBehavior:

  • wdWord8TableBehavior — 0 — отключает Авто-подбор (по умолчанию)
  • wdWord9TableBehavior — 1 — включить Авто-подбор
Выделение блока текста в Word, VBA Selection

Хорошо, с теоретической частью мы закончили, теперь можно приступить к программированию.

Примера на языке VBScript – выделение текста в редакторе Word

' ----------------------------------------------------------------------------' Объект Selection - выделение текста в Word' Преобразование в таблицу - язык VBScript' VBA_Selection_Table.vbs' ----------------------------------------------------------------------------OptionExplicit dim oWord, oDoc, oSel, i Set oWord = CreateObject("Word.Application")Set oDoc = oWord.DocumentsoDoc.Add()Set oSel = oWord.SelectionoWord.Visible = True For i = 0 To 10With oSel.InsertBreak 6.InsertBefore "один, два, три, четыре, пять, шесть, selection word vba".EndOf.InsertBreak 6EndWithNext oWord.Documents(1).Select()oSel.ConvertToTable ",", 31,,,18

В данном примере в цикле For (смотрите статью «Урок 6 по VBScript: Циклы for…next и for each…next«), который выполняется шесть раз, происходит вставка перевода на новую строку, вставка текстовой фразы и перемещаем курсов к конец строки. С помощью оператора with мы можем экономить размер программного кода – не нужно лишний раз писать имя класса. Вконце происходит выделение текста Word и преобразование его в таблицу.

Примера на языке JScript – выделение текста в редакторе Word

// ----------------------------------------------------------------------------// Объект Selection - выделение текста в Word// Преобразование в таблицу - язык JScript// VBA_Selection_Table.js// ---------------------------------------------------------------------------- var oWord1, oDoc1, oSel1, i; oWord1 = WScript.CreateObject("Word.Application");oDoc1 = oWord1.Documents;oDoc1.Add();oSel1 = oWord1.Selection;oWord1.Visible=true; for(i=0; i<=10;i++){with(oSel1){InsertBreak(6);InsertBefore("один, два, три, четыре, пять, шесть, selection word vba");EndOf();InsertBreak(6);}} oWord1.Documents(1).Select();oSel1.ConvertToTable(",",31,"","",18);

Логика работы данного программного кода аналогичны предыдущему примеру, тут мы уже использовали цикл for языка JS, читайте в статье «Урок 9 по JScript — оператор цикла for«. Тут тоже использовался оператор with, обратите внимание, что имена переменных изменились, а в конце каждой строки кода прописана точка с запятой.

Примера на языке Visual Basic for Application – выделение текста в редакторе Word

'VBADim oWord2 AsObject, oDoc2 AsObject, oSel2 AsObject, i Set oWord2 = CreateObject("Word.Application")Set oDoc2 = oWord2.DocumentsoDoc2.AddSet oSel2 = oWord2.SelectionoWord2.Visible = True For i = 0 To 10With oSel2.InsertBreak 6: .InsertBefore "один, два, три, четыре, пять, шесть, selection word vba".EndOf: .InsertBreak 6EndWithNext oWord2.Documents(1).SelectoSel2.ConvertToTable Separator:=",", NumRows:=31, Format:=18

Хорошо, давайте продолжим рассматривать методы класса Selection.

выделение текста в редакторе Word, Selection VBA

EndOf() – Перемещает курсор в конец выделения.

StartOf() – Перемещает курсор в начало выделения.

SetRange(start, end) – Позволяет задать начальное и конечное значение для выделения текста Word.

TypeText() – Выполняет ту же функцию, что и свойство Text – ввод информации.

TypeParagraph() — Метод вставляет параграф.

Copy(), Cut(), Paste(), Delete() – Копирует, вырезает, вставляет и удаляет выделенный текст в Word.

CopyAsPicture() – Копирует выбранный материал как изображение.

И так, теперь рассмотрим программный код с данными методами.

' ----------------------------------------------------------------------------' Класс Selection - выделение текста в Word' Копирование и вставка - язык VBScript' VBA_Selection_Copy_Paste.vbs' ----------------------------------------------------------------------------OptionExplicit dim oWord3, oDoc3, oSel3, i Set oWord3 = CreateObject("Word.Application")Set oDoc3 = oWord3.DocumentsoDoc3.Add()Set oSel3 = oWord3.SelectionoWord3.Visible = True ' Вводим информацию в документ сто разFor i=0 to 100oSel3.TypeText "Пример ввода данных - selection word vba. "Next With oSel3' Выделяем, копируем и вставляем.SetRange 100, 300.Copy.MoveDown.Paste ' Выбираем материал и копируем ее как изображение.SetRange 100, 300.CopyAsPictureEndWith

По сути, данный программный код практически аналогичен предыдущим. Тут в цикле происходит вставка данных несколько раз, а далее следуют операции выделения текста в документе Word, его копирование и вставка.

// ----------------------------------------------------------------------------// Класс Selection - выделение текста в Word// Копирование и вставка - язык JScript// VBA_Selection_Copy_Paste.js// ---------------------------------------------------------------------------- var oWord5, oDoc5, oSel5, i; oWord5 = WScript.CreateObject("Word.Application");oDoc5 = oWord5.Documents;oDoc5.Add();oSel5 = oWord5.Selection;oWord5.Visible=true; // Вводим данные в документ сто разfor(i=0; i<=100; i++){oSel5.TypeText("Пример ввода информации - selection word vba. ");} with(oSel5){// Выделяем, копируем и вставляемSetRange(100,300);Copy();MoveDown();Paste(); // Выделяем и копируем как изображениеSetRange(100,300);CopyAsPicture();}

Ну и в заключение, привожу программный код для макроса:

' VBADim oWord6 AsObject, oDoc6 AsObject, oSel6 AsObject, i Set oWord6 = CreateObject("Word.Application")Set oDoc6 = oWord6.DocumentsoDoc6.AddSet oSel6 = oWord6.SelectionoWord6.Visible = True For i = 0 To 100oSel6.TypeText "Пример ввода информации - selection word vba. "Next With oSel6.SetRange 100, 300: .Copy: .MoveDown: .Paste.SetRange 100, 300: .CopyAsPictureEndWith

Хорошо, на этом можно закончить данную статью. Параллельно, информацию по работе с классом Selection можете рассмотреть еще две публикации, в которых я рассмотрел остальные методы и свойства класса Selection.

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