Макрос 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 - включить Авто-подбор
Хорошо, с теоретической частью мы закончили, теперь можно приступить к программированию.
Примера на языке VBScript – выделение текста в редакторе Word
' ---------------------------------------------------------------------------- ' Объект Selection - выделение текста в Word ' Преобразование в таблицу - язык VBScript ' VBA_Selection_Table.vbs ' ---------------------------------------------------------------------------- Option Explicit dim oWord, oDoc, oSel, i Set oWord = CreateObject("Word.Application") Set oDoc = oWord.Documents oDoc.Add() Set oSel = oWord.Selection oWord.Visible = True For i = 0 To 10 With oSel .InsertBreak 6 .InsertBefore "один, два, три, четыре, пять, шесть, selection word vba" .EndOf .InsertBreak 6 End With Next 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
'VBA Dim oWord2 As Object, oDoc2 As Object, oSel2 As Object, i Set oWord2 = CreateObject("Word.Application") Set oDoc2 = oWord2.Documents oDoc2.Add Set oSel2 = oWord2.Selection oWord2.Visible = True For i = 0 To 10 With oSel2 .InsertBreak 6: .InsertBefore "один, два, три, четыре, пять, шесть, selection word vba" .EndOf: .InsertBreak 6 End With Next oWord2.Documents(1).Select oSel2.ConvertToTable Separator:=",", NumRows:=31, Format:=18
Хорошо, давайте продолжим рассматривать методы класса Selection.
EndOf () – Перемещает курсор в конец выделения.
StartOf () – Перемещает курсор в начало выделения.
SetRange (start, end) – Позволяет задать начальное и конечное значение для выделения текста Word.
TypeText () – Выполняет ту же функцию, что и свойство Text – ввод информации.
TypeParagraph () - Метод вставляет параграф.
Copy (), Cut (), Paste (), Delete () – Копирует, вырезает, вставляет и удаляет выделенный текст в Word.
CopyAsPicture () – Копирует выбранный материал как изображение.
И так, теперь рассмотрим программный код с данными методами.
' ---------------------------------------------------------------------------- ' Класс Selection - выделение текста в Word ' Копирование и вставка - язык VBScript ' VBA_Selection_Copy_Paste.vbs ' ---------------------------------------------------------------------------- Option Explicit dim oWord3, oDoc3, oSel3, i Set oWord3 = CreateObject("Word.Application") Set oDoc3 = oWord3.Documents oDoc3.Add() Set oSel3 = oWord3.Selection oWord3.Visible = True ' Вводим информацию в документ сто раз For i=0 to 100 oSel3.TypeText "Пример ввода данных - selection word vba. " Next With oSel3 ' Выделяем, копируем и вставляем .SetRange 100, 300 .Copy .MoveDown .Paste ' Выбираем материал и копируем ее как изображение .SetRange 100, 300 .CopyAsPicture End With
По сути, данный программный код практически аналогичен предыдущим. Тут в цикле происходит вставка данных несколько раз, а далее следуют операции выделения текста в документе Word, его копирование и вставка.
Ну и в заключение, привожу программный код для макроса:
' VBA Dim oWord6 As Object, oDoc6 As Object, oSel6 As Object, i Set oWord6 = CreateObject("Word.Application") Set oDoc6 = oWord6.Documents oDoc6.Add Set oSel6 = oWord6.Selection oWord6.Visible = True For i = 0 To 100 oSel6.TypeText "Пример ввода информации - selection word vba. " Next With oSel6 .SetRange 100, 300: .Copy: .MoveDown: .Paste .SetRange 100, 300: .CopyAsPicture End With
Хорошо, на этом можно закончить данную статью. Параллельно, информацию по работе с классом Selection можете рассмотреть еще две публикации, в которых я рассмотрел остальные методы и свойства класса Selection.
Спасибо за внимание. Автор блога Владимир Баталий
В этом разделе Visual Basic примеры, связанные с задачами, которые определены в следующих разделах.
Сведения о других задачах редактирования и примеры из них см. в следующих темах:
Определение выбора текста
Свернуть выбор или диапазон
Используйте метод Collapse , чтобы свернуть объект Selection или объект Range до его точки начала или окончания. В следующем примере выбор сводится к точке вставки в начале выбора.
В следующем примере диапазон отменяется до точки окончания (после первого слова) и добавляется новый текст.
Расширение выбора или диапазона
В следующем примере используется MoveEnd].. /.. /.. /api/Word.Selection.MoveEnd.md) метод объекта Selection , чтобы расширить конец выбора, чтобы включить три дополнительных слова. Для расширения объекта Selection также можно использовать методы MoveLeft, MoveRight, MoveUp и Move Down.
В следующем примере используется MoveEnd].. /.. /.. /api/Word.Range.MoveEnd.md) метод объекта Range для расширения диапазона, чтобы включить первые три абзаца в активный документ.
Переопределить выбор или диапазон
Используйте метод GetRange для переопределения существующего объекта Selection или объекта Range . Дополнительные сведения см. в "Работа с объектом Выбор" или "Работа с объектами диапазона".
Изменение текста
Можно изменить существующий текст, изменив содержимое диапазона. Следующая инструкция изменяет первое слово в активном документе, установив Текст].. /.. /.. /api/Word.Range.Text.md) свойства объекта Range на "The".
Вы также можете использовать метод Delete , объект Selection или объект Range для удаления существующего текста, а затем вставить новый текст с помощью метода InsertAfter или метода InertBefore . В следующем примере удаляется первый абзац в активном документе и вставляется новый текст.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
В Word можно автоматизировать часто выполняемые задачи с помощью макросов. Макрос — это набор команд и инструкций, группируемых вместе в виде единой команды для автоматического выполнения задачи.
Чтобы сэкономить время при выполнении часто повторяющихся задач, объедините несколько действий в макрос. Сначала необходимо записать макрос. Затем вы сможете запускать его нажатием кнопки на панели быстрого доступа или с помощью сочетания клавиш. Способ запуска зависит от того, как вы настроите макрос.
В меню Вид последовательно выберите пункты Макросы и Записать макрос.
Введите имя макроса.
Чтобы использовать этот макрос во всех новых документах, проверьте, что в поле Сохранить изменения в указано значение Всех документов (Normal.dotm).
Чтобы запускать макрос нажатием кнопки, выберите пункт Кнопка.
Щелкните новый макрос (у него будет имя примерно следующего вида: Normal.NewMacros.), а затем нажмите кнопку Добавить.
Выберите изображение для кнопки, введите нужное имя и дважды нажмите OK.
Теперь необходимо записать все шаги макроса. Выбирайте команды или нажимайте клавиши для каждого шага задачи. Word будет записывать все, что вы щелкаете мышью, и все клавиши, которые вы нажимаете.
Примечание: Во время записи макроса для выделения текста используйте клавиатуру. Макрос не записывает выделения, сделанные с помощью мыши.
Чтобы остановить запись, в меню Вид последовательно выберите пункты Макросы и Остановить запись.
На панели быстрого доступа появится кнопка для вашего макроса.
Чтобы запустить макрос, нажмите эту кнопку.
В меню Вид последовательно выберите пункты Макросы и Записать макрос.
Введите имя макроса.
Чтобы использовать этот макрос во всех новых документах, проверьте, что в поле Сохранить изменения в указано значение Всех документов (Normal.dotm).
Чтобы запускать макрос с помощью сочетания клавиш, выберите пункт Клавиатура.
Введите сочетание клавиш в поле Новое сочетание клавиш.
Проверьте, не назначено ли такое же сочетание клавиш какой-либо другой команде. Если такое сочетание клавиш назначено какой-либо другой команде, то попробуйте использовать другое сочетание клавиш.
Чтобы использовать этот макрос во всех новых документах, проверьте, что в поле Сохранить в указано значение Normal.dotm.
Теперь необходимо записать все шаги макроса. Выбирайте команды или нажимайте клавиши для каждого шага задачи. Word будет записывать все, что вы щелкаете мышью, и все клавиши, которые вы нажимаете.
Примечание: Во время записи макроса для выделения текста используйте клавиатуру. Макрос не записывает выделения, сделанные с помощью мыши.
Чтобы остановить запись, в меню Вид последовательно выберите пункты Макросы и Остановить запись.
Чтобы запустить макрос, нажмите сочетание клавиш.
Чтобы запустить макрос, нажмите кнопку на панели быстрого доступа, нажмите сочетание клавиш или запустите макрос из списка Макросы.
В меню Вид последовательно выберите пункты Макросы и Просмотр макросов.
В пункте Имя макроса выберите в списке макрос, который вы хотите запустить.
Чтобы сделать макрос в одном документе доступным во всех новых документах, добавьте его в шаблон Normal.dotm.
Откройте документ, в котором содержится макрос.
В меню Вид последовательно выберите пункты Макросы и Просмотр макросов.
Щелкните макрос, который вы хотите добавить в шаблон Normal.dotm, а затем нажмите кнопку Копировать.
В меню Файл последовательно выберите пункты Параметры и Настроить ленту.
В пункте Выбрать команды из выберите пункт Макросы.
Выберите нужный макрос.
В пункте Настройка ленты выберите вкладку и настраиваемую группу, в которую вы хотите добавить макрос.
Если у вас нет настраиваемой группы, то нажмите кнопку Новая группа. Затем нажмите кнопку Переименовать и введите имя настраиваемой группы.
Чтобы изменить изображение для макроса и ввести нужное имя, нажмите кнопку Переименовать.
Дважды нажмите кнопку OK.
На вкладке Разработчик в группе Код нажмите кнопку Макросы.
В поле Имя макроса введите имя нового макроса.
Примечание: Если новому макросу присвоить то же самое имя, что и макросу, встроенному в Word, новые макрокоманды будут выполняться вместо встроенных. Чтобы просмотреть список встроенных макросов, выберите пункт Команды Word в списке Макросы из.
В списке Макросы из щелкните шаблон или документ, в котором нужно сохранить макрос.
Чтобы макрос был доступен во всех документах, выберите Normal.dotm.
После запуска редактора Visual Basic могут потребоваться дополнительные сведения о работе с языком Visual Basic для приложений. Для получения сведений выберите в меню Help (Справка) пункт Microsoft Visual Basic Help (Справка по Microsoft Visual Basic) или нажмите клавишу F1.
Вы можете записать последовательность действий или создать макрос с нуля, введя код на языке Visual Basic для приложений в редактор Visual Basic.
Примечание: Чтобы работать с макросами в приложении Office Word 2007, необходимо отобразить вкладку Разработчик.
Выберите категорию Основные.
В группе Основные параметры работы с Word установите флажок Показывать вкладку "Разработчик" на ленте.
Примечание: Лента входит в Пользовательский интерфейс Microsoft Office Fluent.
На вкладке Разработчик в группе Код нажмите кнопку Запись макроса.
В поле Имя макроса введите имя нового макроса.
Примечание: Если новому макросу присвоить то же самое имя, что и макросу, встроенному в Office Word 2007, новые макрокоманды будут выполняться вместо встроенных. Чтобы просмотреть список встроенных макросов, на вкладке Разработчик в группе Код нажмите кнопку Макросы. В списке Макросы из выберите вариант Команды Word.
В списке Макрос доступен для щелкните шаблон или документ, в котором нужно сохранить макрос.
Важно: Чтобы макрос был доступен во всех документах, выберите Normal.dotm.
Введите описание макроса в поле Описание.
Выполните одно из указанных ниже действий.
Начните запись. Чтобы начать запись макроса, не связывая его с кнопкой на панели быстрого доступа или сочетанием клавиш, нажмите кнопку ОК.
Создайте кнопку. Чтобы связать макрос с кнопкой на панели быстрого доступа, сделайте следующее:
Щелкните кнопке.
В группе Настройка панели быстрого доступа выберите документ или все документы, для которых требуется добавить макрос на панель быстрого доступа.
Важно: Чтобы макрос был доступен во всех документах, выберите Normal.dotm.
В диалоговом окне Выбрать команды из выберите макрос, который требуется записать, и нажмите кнопку Добавить.
Чтобы настроить кнопку, нажмите кнопку Изменить.
В поле Символ выберите нужный символ для кнопки.
В поле Отображаемое имя введите имя макроса, которое должно отображаться.
Чтобы начать запись макроса, нажмите кнопку ОК два раза.
На панели быстрого доступа будет показан выбранный символ. Заданное имя отображается при наведении указателя на символ.
Назначьте сочетание клавиш. Чтобы назначить макросу сочетание клавиш, сделайте следующее:
Выберите пункт Клавиатура.
В списке Команды выберите макрос, который требуется записать.
В поле Новое сочетание клавиш введите любую последовательность клавиш и нажмите кнопку Назначить.
Чтобы начать запись макроса, нажмите кнопку Закрыть.
Выполните действия, которые следует включить в макрос.
Примечание: При записи макроса вы можете с помощью мыши щелкать команды и параметры, но не выделять текст. Для выделения текста необходимо использовать клавиатуру. Дополнительные сведения о выделении текста с помощью клавиатуры см. в статье Выделение текста.
Чтобы остановить запись макрокоманд, выберите команду Остановить запись в группе Код.
Изменение сочетания клавиш для макроса
Выберите команду Настройка .
Рядом с полем Сочетания клавиш нажмите Настройка.
В списке Категории выберите пункт Макросы.
В списке Макросы выберите макрос, который нужно изменить.
Щелкните поле Новое сочетание клавиш и нажмите клавиши, которые следует назначить.
В поле Текущие сочетания проверьте, не используется ли назначаемое сочетание для выполнения другой задачи.
В списке Сохранить изменения в выберите вариант, который соответствует месту, в котором должен запускаться макрос.
Важно: Чтобы макрос был доступен во всех документах, выберите Normal.dotm.
На вкладке Разработчик в группе Код выберите пункт Макросы.
В списке Имя макроса выберите макрос, который необходимо запустить.
На вкладке Разработчик в группе Код нажмите кнопку Макросы.
В поле Имя макроса введите имя нового макроса.
Примечание: Если новому макросу присвоить то же самое имя, что и макросу, встроенному в Office Word 2007, новые макрокоманды будут выполняться вместо встроенных. Чтобы просмотреть список встроенных макросов, выберите пункт Команды Word в списке Макросы из.
В списке Макросы из щелкните шаблон или документ, в котором нужно сохранить макрос.
Чтобы макрос был доступен во всех документах, выберите Normal.dotm.
После запуска редактора Visual Basic могут потребоваться дополнительные сведения о работе с языком Visual Basic для приложений. Для получения сведений выберите в меню Help (Справка) пункт Microsoft Visual Basic Help (Справка по Microsoft Visual Basic) или нажмите клавишу F1.
Чтобы быстро выполнять часто повторяющиеся задачи, в классической версии Word вы можете объединить шаги в макросы, а затем запускать их одним щелчком мыши. В Word в Интернете такие задачи придется выполнять вручную.
Если у вас есть Word, нажмите кнопку Открыть в Word, чтобы открыть документ в Word.
Затем следуйте инструкциям для классических версий Word.
Если вы запустите макрос в Word и сохраните документ, вы увидите результаты работы макроса при повторном открытии документа в Word в Интернете.
Для начала давайте вспомним, что выделение фрагмента текста осуществляется следующим образом: в большинстве случаев нужно выбрать несколько фрагментов, для этого сначала выбираем один нужный фрагмент, далее удерживаем клавишу " Ctrl " и выбираем остальные фрагменты. Теперь перейдем к теме публикации…
Методы Insert… – выделение фрагментов текста в Word
Примеры будут как для редактора VBA, так и для сценариев Windows Script Host, и так, начнем…
Методы с префиксом Insert. позволяют вставить текст в документ:
InsertAfter (text) и InsertBefore (text) – Вставка текста (text) в конец или в начало выделения. При отсутствии выделения вставка производится там, где находится курсор. Сам материал остается выделенным.
InsertBreak (type) - Вставляет страницу, колонку или секцию. Параметр type содержит значение константы WdBreakType:
- wdTextWrappingBreak - 11 - Конец текущей строки и продолжение вставки ниже изображения, таблицы или другого объекта. Материал продолжается на следующей пустой строке, которая не содержит таблицу, совмещенную с левой или правой границей.
- wdLineBreakClearRight - 10 - Перевод на новую строку.
- wdLineBreakClearLeft - 9 - Перевод на новую строку.
- wdColumnBreak - 8 - Разрыв колонки.
- wdPageBreak - 7 - Вставка новой страницы.
- wdLineBreak - 6 - Перевод на новую строку.
- wdSectionBreakOddPage - 5 - Начало нового раздела со следующей нечетной страницы.
- wdSectionBreakEvenPage - 4 - Начало нового раздела со следующей четной страницы.
- wdSectionBreakContinuous - 3 - Новый раздел без разрыва страницы.
- wdSectionBreakNextPage - 2 - Начало нового раздела со следующей страницы.
Прежде чем приступать к программированию, стоит сделать некоторое пояснение. По сути, ряд действий будут всегда одинаковыми – создание нового документа (за это будет отвечать функция или процедура Create_Doc). Изменяться будут только вызываемые методы.
Программный код на VBScript :
' ---------------------------------------------------------------------------- ' Объект Word Selection - методы ' Пример на языке VBScript - выделение фрагментов Word текста ' Selection-1.vbs ' ---------------------------------------------------------------------------- Option Explicit ' Глобальные переменные dim oWord, oDoc, oSel, i ' Процедура создания нового документа Sub Create_Doc() Set oWord = CreateObject("Word.Application") Set oDoc = oWord.Documents oDoc.Add() Set oSel = oWord.Selection oWord.Visible = True End Sub Sub Insert_After_Before() With oSel .Text = "как выделить фрагмент текста " .InsertAfter " . Конец" .InsertBefore "Начало. " .EndOf .InsertBreak 6 End With End Sub call Create_Doc call Insert_After_Before
Давайте посмотрим, что данный пример делает. При вызове процедуры Insert_After_Before происходит добавление в документ текстовой строки, далее в конец добавляется фраза " . Конец", а в начало - "Начало. ". Потом происходит перевод курсора в конец и добавление перевода строки.
Пример на JScript :
Для VBA мы просто запускаем редактор кода, добавляем новый модуль и прописываем код, в моем случае имя модуля - Module1:
Sub Module1() ' ---------------------------------------------------------------------------- ' выделение в Word фрагментов текста ' ---------------------------------------------------------------------------- Dim oWord1 As Object, oDoc1 As Object, oSel1 As Object, i Set oWord1 = CreateObject("Word.Application") Set oDoc1 = oWord1.Documents oDoc1.Add Set oSel1 = oWord1.Selection oWord1.Visible = True '*************************************** With oSel1 .Text = "как выделить фрагмент текста " .InsertAfter " . Конец" .InsertBefore "Начало. " .EndOf .InsertBreak wdLineBreak End With '*************************************** End Sub
И так, с одной теоретической частью мы закончили и написали программный код, теперь можно приступить к следующей части.
Методы Insert… – выделение фрагментов текста в Word
InsertCaption (Label, Title, TitleAutoText, Position, ExcludeLabel) - Вставляет заголовок сразу после или перед указанным выбором. Обязательным является только параметр Label.
Label – Нумерационный заголовок. Параметр может быть строкой или значением константы WdCaptionLabelID:
- wdCaptionEquation - Уравнение
- wdCaptionFigure - Рисунок
- wdCaptionTable – Таблица
Если метка (Label) не определена, то возникнет ошибка. Для определения метки надо использовать метод Add коллекции CaptionLabels , например:
Title – Заголовок, который будет отображаться справа от метки.
TitleAutoText – Авто-заголовок, перекрывает параметр Title.
Position - Указывает, будет ли вставлен заголовок выше или ниже. Может быть одной из констант WdCaptionPosition:
- wdCaptionPositionAbove - 0 - Метка название добавляется выше.
- wdCaptionPositionBelow - 1 - Метка название добавляется ниже.
ExcludeLabel - TRUE - отключить метку, заданную в параметре Label. FALSE - включить метку. Дополнительно.
Ниже я приведу примеры, что бы не дублировать программный код, я привел только содержимое процедуры Sub Insert_Caption.
' VBScript Sub Insert_Caption() oWord3.CaptionLabels.Add "Номер" For i = 0 To 10 oSel3.InsertCaption "Номер", " как выделять фрагменты текста " & i oSel3.InsertBreak 6 Next End Sub
Тут используется цикл for для вставки нескольких фрагментов - "Урок 6 по VBScript: Циклы for…next и for each…next".
Тут тоже используется цикл for, но уже для JS кода - "Урок 9 по JScript - оператор цикла for".
' VBA oWord5.CaptionLabels.Add "Номер" For i = 0 To 10 oSel5.InsertCaption Label:="Номер", Title:=" Фраза VBA Selection " & i oSel5.InsertBreak wdLineBreak Next
Обратите внимание, что имена переменных в примерах отличаются, это пришлось сделать с технических причин – в глазах поисковых систем статья становится заспамленой. Хорошо, давайте двигаться дальше.
Методы Insert… – выделение фрагментов текста в Word
InsertDateTime (DateTimeFormat) – Метод позволяет вставить дату или время в документ, или одновременно оба значения. Помимо параметра DateTimeFormat есть еще четыре, но они практически не используются.
DateTimeFormat – Необязательный параметр, позволяет указать формат даты и времени.
' VBScript Sub Insert_Date With oSel4 .Text = "как выделить фрагмент текста " .EndOf .InsertBreak 6 .InsertDateTime .InsertBreak 6 .InsertDateTime "MMMM dd, yyyy" .InsertBreak 6 .InsertDateTime "MMMM dd, yyyy - H:M:S" End With End Sub
Обратите внимание на оператор with, он позволяет не писать каждый раз имя класса.
Тут логика работы аналогична.
' VBA With oSel5 .Text = " как выделить в Word фрагмент текста " .EndOf .InsertBreak wdLineBreak .InsertDateTime .InsertBreak wdLineBreak .InsertDateTime "MMMM dd, yyyy" .InsertBreak wdLineBreak .InsertDateTime "MMMM dd, yyyy - H:M:S" End With
Хорошо, осталось рассмотреть последнюю третью часть статьи.
Методы Insert… – выделение фрагментов текста в Word
InsertFile (FileName) – Позволяет вставить содержимое указанного файла в документ, параметр FileName хранит имя или путь к файлу, если путь отсутствует, то будет подразумеваться текущий каталог.
InsertNewPage - Вставляет новую страницу в место, где находится указатель.
InsertParagraph - Заменяет выделение знаком абзаца.
InsertParagraphAfter - Вставляет знак абзаца после выделения .
InsertParagraphBefore - Вставляет новый абзац перед выделением.
Методы с префиксом Move. также встречаются едва ли не в любой программе, связанной с вводом текста в Word. Самые важные и удобные из этих методов:
MoveLeft (), MoveRight (), MoveUp (), MoveDown () – Методы дают возможность переместить курсор влево, вправо, вверх и вниз. Все четыре метода принимают следующие параметры (Unit, Count, Extend), являющиеся необязательными:
Unit - Блок, по которым выбор должен быть перемещен. Параметр Unit содержит значения константы wdUnits.
Count – Единица перемещения. Значение по умолчанию 1.
Extend - Может быть либо wdMove (по умолчанию) или wdExtend.
MoveEnd (), MoveStart () – Перемещение курсора в конец или начало выделения, параметры - Unit, Count.
MoveStartUntil (), MoveStartWhile (), MoveEndUntil (), MoveEndWhile () – Позволяют переместить курсор к заданному символу или последовательности символов. Параметры Cset (обязательный) и Count (дополнительный):
Cset - Один или несколько символов. Аргумент является чувствительным к регистру.
Count – Задает целое или отрицательное значение, на которое происходит перемещение курсора.
Move (Unit, Count) – Фактически, тут мы может указать направление (Count) и текстовую единицу (Unit).
Логика работы для следующих примеров остается та же – меняется только код вызываемой процедуры. Фактически, код для языка VBScript и VBA является идентичным.
' VBScript Sub Get_Move() With oSel6 ' вставляем в документ фразу сто раз For i = 0 To 10 .Text = "как выделить фрагменты нужного текста " ' Перемещаем курсор в конец .EndOf Next For i = 0 To 300 .MoveLeft Next For i = 0 To 100 .MoveRight Next For i = 0 To 4 .MoveUp Next .MoveStartUntil "Word" For i = 0 To 15 .Move 2, 5 Next End With End Sub
Видим, что в данном коде мы использовали несколько операторов for.
Обратите внимание на приведенные в самом начале статьи примеры кода для языков VBA и VBScript, в макросе мы можем использовать именованные константы объекта Word, но в теле Windows Script Host сценария нет, так как там они не доступны. Описание свойств класса 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:
Пример под 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". В остальном коде я думаю, разобраться несложно, если есть вопросы, задавайте, буду рад ответить.
Спасибо за внимание. Автор блога Владимир Баталий
Читайте также: