Объект Word Selection — выделить весь текст в ворде, свойства

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

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

Помним, что бы вручную выделить весть текст в Ворд , достаточно нажать комбинацию клавиш «Ctr + A«. Мы рассмотрим некоторые свойства объекта Word.Selection. Говорю «некоторые«, так как большинство используются редко, в случае чего – документация MSDN всегда под рукой. И так, сам объект Selection выполняет двойную функцию – с одной стороны он позволяет вставлять фразу в только что созданный документ, с другой стороны – позволяет обрабатывать выделение всего текста в ворде. Описание методов класса Selection можно просмотреть тут и тут.

Свойства класса Word.Selection – выделить весь текст в Ворде

В конце статьи я приведу три примера программного кода – два под Windows Script Host (язык VBScript и JScript) и один под Visual Basic for Application.

И так, сначала давайте познакомимся со свойствами:

Start и End – Если текст уже выделен, то Start и End будут содержать начальную и конечную позиции выделения. Так как они доступны и для записи, то можно задать диапазон для выделения всего текста в ворде.

Flags – Позволяет установить или получить параметры выбора. Flags может быть установлено в одной из следующих констант wdSelectionFlags:

  • wdSelActive — 8 — активное выделение.
  • wdSelAtEOL — 2 – конец строки.
  • wdSelOvertype — 4 – замена символов.
  • wdSelReplace — 16 — выбор был заменен.
  • wdSelStartActive — 1 — начало активного документа.

Само свойство возвращает сумму констант wdSelectionFlags.

Information(Type) — Получить информацию относительно выделения или заданного диапазона. Только чтение. Параметр Type содержит значения константы wdInformation (я указал только основные значения):

  • wdActiveEndAdjustedPageNumber – 1 — Номер страницы.
  • wdActiveEndSectionNumber – 2 — Количество разделов.
  • wdActiveEndPageNumber – 3 – Номер страницы начиная с начала.
  • wdNumberOfPagesInDocument – 4 – Количество страниц в документе
  • wdHorizontalPositionRelativeToPage – 5 — Горизонтальная позиция от левого края выделения к левому краю страницы в пунктах.
  • wdVerticalPositionRelativeToPage – 6 – Вертикальная позиция от верхнего края выделения к верхнему краю страницы в пунктах.
  • wdFirstCharacterColumnNumber – 9- Позиция первого слова в выделении начиная с начала документа.
  • wdFirstCharacterLineNumber – 10 – Позиция строки, с которой начинается выделение, начиная с начала.
  • wdFrameIsSelected – 11 – TRUE, если выделен весть текст в ворде.
  • wdZoomPercentage — 19 – Масштаб в процентах
  • wdCapsLock – 21 – TRUE если включен CapsLock.
  • wdNumLock — 22 – TRUE если включен NumLock.
  • wdRevisionMarking – 24 — Возвращает True, если отслеживание изменений в силу.

Все константы будут содержать значение -1, если информация выходит за пределы допустимой области.

IPAtEndOfLine —True — указатель ввода расположен в конце строки (в крайнем правом положении при выравнивании).

NoProofing — Отменяет (значение TRUE) для выбранного фрагмента проверку орфографии и грамматики.

StoryType – Возвращает тип истории для указанного выбора (только чтение). Константа WdStoryType:

  • wdCommentsStory — 4 – Комментарии.
  • wdEndnoteContinuationNoticeStory — 17 — Сноска продолжения уведомления.
  • wdEndnoteContinuationSeparatorStory — 16 – Сноска продолжения разделителя.
  • wdEndnoteSeparatorStory — 15 — Сноска разделитель.
  • wdEndnotesStory — 3 – Примечания.
  • wdEvenPagesFooterStory — 8 — Четные страницы футера.
  • wdEvenPagesHeaderStory — 6 — Четные страницы заголовка.
  • wdFirstPageFooterStory — 11 –Первый футер страницы.
  • wdFirstPageHeaderStory — 10 – Первый заголовок страницы.
  • wdFootnoteContinuationNoticeStory — 14 — Сноска продолжения уведомления.
  • wdFootnoteContinuationSeparatorStory — 13 — Сноска продолжения разделителя.
  • wdFootnoteSeparatorStory — 12 — Сноска разделитель.
  • wdFootnotesStory — 2 – Сноски.
  • wdMainTextStory — 1 — Основной текст.
  • wdPrimaryFooterStory — 9 — Первичный футер.
  • wdPrimaryHeaderStory — 7 — Первичный заголовок.
  • wdTextFrameStory — 5 — Текст рамки.

Text – Получить или указать материал, который будет вставлен на месте выделения, или просто там, где расположен курсор. Чтение/Запись

Type – Возвращает тип выделения, константа WdSelectionType:

  • wdNoSelection — 0 – Отсутствует.
  • wdSelectionBlock — 6 – Блок.
  • wdSelectionColumn — 4 – Столбец.
  • wdSelectionFrame — 3 – Рамка.
  • wdSelectionInlineShape — 7 – Рядовая форма.
  • wdSelectionIP — 1 – Пункт.
  • wdSelectionNormal — 2 – Нормальный.
  • wdSelectionRow — 5 – Строка.
  • wdSelectionShape — 8 – Форма.

Начинаем программировать – выделить весь текст в ворде

выделение всего текста в документе ворд

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

Пример на языке VBScript:

' ----------------------------------------------------------------------------
' Класс Word Selection
' Создание, ввод и выбор
' выделение текста в ворде
' Selection.vbs
' ----------------------------------------------------------------------------
Option Explicit
 
dim oWord, oDoc, oSel, SelText, MyText, i, SEnd, SStart
 
Set oWord = CreateObject("Word.Application")
Set oDoc = oWord.Documents
oDoc.Add()
Set oSel = oWord.Selection
oWord.Visible = True
 
MyText="Пример работы с объектом Word Selection в VBScript, выделение всего текста в ворде "
 
' вставляем в документ фразу сто раз
For i = 0 To 100
  oSel.Text = MyText
  ' Перемещаем курсор в конец содержимого
  oSel.EndOf
Next
 
' Выделяем весь текст в ворде
oWord.Documents(1).Select
' задержка в пять секунд
WScript.Sleep 5000
 
With oSel
     ' Определяем позиции
     SStart = oSel.Start
     SEnd = oSel.End
 
     ' Перемещаем курсор в конец
     .EndOf
     .Text = SStart & "  " & SEnd
     .EndOf
 
     ' Выделяем заданный диапазон                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
     .Start= SStart +400
     .End= SEnd -400
 
     ' задержка в пять секунд
     WScript.Sleep 5000
 
     ' Отменяем проверку
     .NoProofing = true
 
     ' Выводим значения                                                                                                                                                                                                                                                                                                                                                                                                                                                                           выделить весь текст в документе ворд
     MsgBox "Information - " & .Information(19) & vbCrLf &_
                 "StoryType - " & .StoryType & vbCrLf &_
                 "Type - " & .Type & vbCrLf &_
                 "IPAtEndOfLine - " & .IPAtEndOfLine
End With

Пример на языке JScript:

// ----------------------------------------------------------------------------
// Объект Word Selection
// Создание, ввод и выбор
// выделение текста в ворде
// Selection.js
// ----------------------------------------------------------------------------
var oWord1, oDoc1, oSel, MyText, i, SEnd, SStart;
 
oWord1 = WScript.CreateObject("Word.Application");
oDoc1 = oWord1.Documents;
oDoc1.Add();
oSel = oWord1.Selection;
oWord1.Visible = true;
 
MyText="Пример работы с объектом Word Selection в JScript, выделение всего текста в ворде "
 
// вставляем в документ фразу сто раз
for(i=0; i<=100; i++){
  oSel.Text = MyText;
  // Перемещаем курсор в конец текста                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  oSel.EndOf();
}
 
// Выделяем весь текст в ворд
oWord1.Documents(1).Select();
// задержка в пять секунд
WScript.Sleep(5000);
 
with (oSel){
     // Определяем позиции
     SStart = Start;
     SEnd = End;
 
     // Перемещаем курсор в конец
     EndOf();
     Text = SStart + "  " + SEnd;
     EndOf();
 
     // Выбираем заданный диапазон                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             выделить весь текст в документе ворд
     Start= SStart + 400;
     End= SEnd - 400;
 
     // задержка в пять секунд
     WScript.Sleep(5000);
 
     // Отменяем проверку текста
     NoProofing = true;
 
     // Выводим значения
     WScript.Echo ("Information - " + Information(19) +  "\nStoryType - " + StoryType + "\nType - " + Type + "\nIPAtEndOfLine - " + IPAtEndOfLine)
}
выделить весь текст в документе ворд

Пример под Visual Basic for Application:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 
Sub Module2()
    Dim oWord2 As Object
    Dim oDocument As Object
    Dim oSel As Object
 
    Set oWord2 = CreateObject("Word.Application")
    oWord2.Visible = True
    Set oDocument = oWord2.Documents.Add
    Set oSel = oWord2.Selection
 
    MyText = "Пример работы с объектом Word Selection в Visual Basic for Application - выделить весь текст в ворде "
 
     With oSel
                 For i = 0 To 100
                            .Text = MyText
                            .EndOf
                 Next
                 oWord2.Documents(1).Select
                 Sleep 3000
 
                 SStart = .Start
                 SEnd = .End
 
                 .EndOf
                 .Text = SStart & "  " & SEnd
                 .EndOf
 
                 .Start = SStart + 400
                 .End = SEnd - 400                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ' выделить весь текст в документе ворд
 
                 Sleep 3000
 
                 .NoProofing = True
     End With
End Sub

И так, с теоретической частью мы разобрались, и даже немного попрограммировали, теперь стоит дать некоторые пояснения к программному коду. В последнем примере для VBA в самом начале есть такая строка:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Дело в том, что функция Sleep (смотрите статью «Объект WScript — методы sleep, quit и echo и 8 свойств») доступна только в сценариях VBS и JS, что бы сделать задержку для макроса, мне пришлось обратиться к системной функции Windows. Для вставки материала в документ используется цикл for, его смотрите описание синтаксиса для JScript — «Урок 9 по JScript — оператор цикла for» и для VBScript — «Урок 6 по VBScript: Циклы for…next и for each…next«. В остальном коде я думаю, разобраться несложно, если есть вопросы, задавайте, буду рад ответить.

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