Word vba selection expand

title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

Selection.Expand method (Word)

vbawd10.chm158662785

vbawd10.chm158662785

word

Word.Selection.Expand

8b716453-7656-e8b8-f6b0-0dc97ef2714d

06/08/2017

medium

Selection.Expand method (Word)

Expands the specified range or selection. Returns the number of characters added to the range or selection. Long.

Syntax

expression. Expand( _Unit_ )

expression Required. A variable that represents a Selection object.

Parameters

Name Required/Optional Data type Description
Unit Optional Variant A WdUnits constant that represents the unit by which to expand the range. The default value is wdWord.

Example

This example capitalizes the first character in the selection and then expands the selection to include the entire sentence.

With Selection 
 .Characters(1).Case = wdTitleSentence 
 .Expand Unit:=wdSentence 
End With

See also

Selection Object

[!includeSupport and feedback]

I am using this code to extend selection to whole line on word document, Now I want to extend selection to whole paragraph

Selection.Expand wdLine

Deduplicator's user avatar

Deduplicator

44.3k7 gold badges65 silver badges115 bronze badges

asked Nov 23, 2016 at 8:13

JustMe's user avatar

JustMeJustMe

6,0353 gold badges19 silver badges17 bronze badges

2 Answers

If you know one of the enumerated values then you can use the Object Explorer to find the name of the Enumeration. By referencing the Enumeration you’ll be able to use Intellisense to determine all the valid values.

enter image description here

answered Nov 23, 2016 at 8:42

* Для выделения диапазона используется его метод Select. Например, для объекта RangeR команда имеет вид RangeR. Select.

* Для получения доступа к диапазону, представляющему то же содержимое, что и выделенная область, используется свойство Range.

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

Word VBA предлагает целый ряд методов для перемещения и изменения размеров диапазонов и выделенных областей. В настоящем разделе я рассматриваю только самые важные из них; для знакомства с другими методами вам придется обращаться к справочной системе.

Метод Expand увеличивает существующий диапазон или выделенную область, добавляя блок текста в их конец. Блок может представлять собой символ, слово, абзац или что-нибудь другое. Вы можете добавить только один заранее определенный блок; кроме того, добавление подобных блоков в начале диапазона или выделенной области не допускается.

Для добавления к выделенной области слова, которое будет следовать сразу за ней, используйте такую инструкцию:

Selection.Expand(wdWord)

Вы можете использовать любую из следующих констант для расширения объекта; wdCharct er, wdWord, wdSent ence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow, wdTable и (только для объектов Selection) wdLine. По умолчанию используется константа wdWord.

Теперь нам следует остановиться на одном щекотливом моменте: объекты Selection (но не диапазоны) также содержат метод Expand. Этот метод включает соответствующее средство Word, которое позволяет расширять выделенную область при перемещении указателя мыши. Каждый раз, когда программа вызывает метод Extend, выделенная область увеличивается на блок текста, который следует сразу за точкой вставки: текущее слово, предложение, абзац, выделенный фрагмент пли целый документ. Если вы указали аргумент в виде одного символа, например, Selection.Expand ( «С» ). выделенная область будет расширена вплоть до первого встретившегося указанного символа.

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

Метод Move изменяет диапазон или выделенную область, начиная с их сжатия, отмечая их расположение, а в них уже нет никакого текста. Расположение совпадает с началом исходного объекта. После этого метод Move перемещает «сжатый» объект в соответствии с вашими инструкциями. По окончании перемещения вы можете использовать методы Expand и Mover,nd для наполнения объекта текстом.

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

«Расширение диапазонов и выделенных областей» раньше в этой главе). Аргумент Count представляет собой целое положительное число, если вы хотите перемешать объект вперед по документу (т.е. к его концу), или отрицательное, если вы хотите перемещать объект назад по документу. В приведенном ниже примере аргументы не заключены в скобки, поскольку возвращенное методом значение (количество перемещенных элементов) здесь не используется:

oTheRange .Move Unit : = waParagraph, Count, : = -2

Методы MoveStart. и MoveEnd работают практически так же, как и метод Move, только они изменяют начальную или конечную точку диапазона или выделенной области соответственно. Приведенная ниже инструкция перемешает начало выделенной области на три слова ближе к концу документа:

Select-on.KoveStart Unit : = wdWord, Count := 3

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

Еще одна пара методов, Start Of или EndOf, перемешает или расширяет начало или конец диапазона или выделенной области. Метод Start Of перемещает начало объекта обратно к началу текущего блока, в то время как метод EndOt перемешает конец объекта вперед к концу текущего блока.

Вы можете использовать аргумент Extend с любым методом для контроля над действиями Word. Если перемешаемая сторона объекта уже находится с того края, к которому вы пытаетесь ее переместить, ничею не происходит. Используйте константу wdMove для сжимания объекта или константу wdExtend для перемещения только указанной стороны. Ниже приведен соответствующий пример:

Selection. Start Of Unit := wdSentence, Extend := wdMove

Очень часто вам необходимо сжать диапазон или выделенную область в точку, которая не содержит никакого текста. С технической точки зрения свернутые диапазон или выделенная область — это такие диапазон или выделенная область, начальная и конечная точки которых совпадают. Сжатие подобных объектов оказывается важным в тех ситуациях, когда вам необходимо вставить поле, таблицу или другой элемент до или после выделенной области или диапазона, обойдясь без замены текста. (Вы можете вставить обычный текст, новые абзацы, а также некоторые другие элементы в «несжатые» диапазон или выделенную область).

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

Selection.Collapse

А этот пример сжимает выделенную область к ее конечной точке:

Selection.Collapse( Direction:=wdCollapseEnd)

Если вы сожмете диапазон, который заканчивается знаком абзаца, к его конечной точке (используя константу wdCollapseEnd), Word разместит сжатый диапазон после знака абзаца (это означает, что сжатый диапазон будет находиться в следующем абзаце). Если же вы хотите разместить что-то перед знаком абзаца исходного диапазона, вы должны сначала переместить диапазон обратно с помощью метода MoveEnd, используя инструкцию, подобную этой:

Диапазон.MoveEnd Unit := wdCharacter, Count := -1

Удалить весь текст в диапазоне или выделенной области совсем несложно: просто используйте метод Delete соответствующего объекта. Вы можете использовать и метод Cut, если хотите удалить текст и поместить его в буфер обмена. Конечно же, метод Сору копирует текст в буфер обмена, не оказав влияния на текст в диапазоне или выделенной области.

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

Хотя использование буфера обмена для передачи текста из одного места в другое кажется вполне привычным, этот метод не всегда оказывается самым эффективным. Намного удобнее использовать свойства Text или FormattedText диапазона или выделенной области. Залайте эти свойства равными диапазону или выделенной области, содержащим текст, который вы хотите передать, и все. Объект назначения должен быть сжат до тех пор, пока передаваемый текст не должен будет заменить существующий текст в объекте.

Приведенный ниже фрагмент кода передает текст из выделенной области в сжатый диапазон, привязанный к закладке (операцию передачи проделывает четвертая строка кода). В новое место расположения попадает только сам текст; любое форматирование при этом теряется:

With ActiveDocument.Bookmarks("TheBookmark")

Set RangeY = _

ActiveDocument.Range(Start:=.Start, End=.Start)

End With

RangeY.Text = Selection.Text

Для передачи вместе с текстом и его форматирования просто замените свойство Text свойством FormattedText.

Простейшим для запоминания приемом добавления текста является задание свойства Text диапазона или выделенной области равным тексту, который вы решили вставить. Это проиллюстрировано на примере, показанном ниже:

Программирование в Word

217

Select() — позволяет просто выделить весь документ. Этот метод существует для очень большого количества объектов, в том числе для Selection

и Range.

TransformDocument() — исключительно мощный метод, но только для программистов, которые хорошо разбираются в XML и XSLT. Позволяет применить к документу таблицу преобразований стилей (Extensible Stylesheet Language Transformation, XSLT), при помощи которой можно поменять все, что угодно.

Undo() — отменяет определенное количество последних действий. По синтаксису и принципам работы — полный аналог метода Redo().

UndoClear() — очищает буфер отмены изменений, чтобы пользователь не смог откатить произведенные действия.

UnProtect() — снимает защиту с документа (определенную методом Protect() или в графическом интерфейсе). Может быть очень полезным перед программным внесением изменений в защищенный документ.

Часто используемых событий у объекта Document всего три: New (можно определить только для шаблона, срабатывает, когда на основе этого шаблона создается новый документ), Open и Close. Все эти события очевидны и изначально доступны в окне редактора кода Visual Basic.

10.5.1. Работа с объектом Selection

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

Первый объект, который мы рассмотрим, — это объект Selection.

Обычно перед тем, как что-либо сделать в окне документа Word, пользователь либо выделяет нужный фрагмент текста, либо переставляет указатель вставки текста в нужное место. Объект Selection представляет именно такой выделенный участок текста (а если ничего не выделено пользователем, то место, где находится указатель вставки). Именно этот объект обычно использует макрорекордер.

Создавать объект Selection и получать на него ссылку в переменную совершенно не нужно. Дело в том, что объект Selection в документе может быть

только один. Он создается автоматически при запуске Word и всегда доступен. Обращаться к нему можно так:

Application.Selection.Text = «Вставляемый текст»

или просто:

Selection.Text = «Вставляемый текст»

Обычно нам нужно правильно определить то место, на которое указывает объект Selection, чтобы выделить нужный нам участок текста или точку для ввода.

Существует несколько способов для настройки выделения в документе Word:

самый простой способ — положиться на выделение нужного текста пользователем. Обычно такой способ применяется для сложного редактирования или форматирования участков текста и для ввода информации в указанное пользователем место документа, когда в автоматическом режиме нужное место не найти;

воспользоваться методом Select(), который предусмотрен для огромного числа объектов (Document, Range, Bookmark, Table со всеми подобъектами типа столбцов и строк, PageNumber, Field и т. п.). Этот метод просто выделяет весь документ, закладку, таблицу и т. п.;

воспользоваться многочисленными методами объекта Selection, чтобы преобразовать уже существующее выделение;

воспользоваться объектом Find для поиска нужного фрагмента текста. Подробнее об этом объекте — в разд. 10.6.5;

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

Если вы полагаетесь на выделение нужного места пользователем, то помните, что пользователь может ухитриться выделить одновременно несмежные участки текста (при помощи клавиши <Ctrl>) или выделить не текст, а часть таблицы, рисунок или другой нестандартный объект в документе. Чаще всего поведение программы, работающей с объектом Selection, в этом случае становится совершенно непредсказуемым, поэтому рекомендуется всегда использовать дополнительные проверки при помощи свойств Type и Information

объекта Selection.

Несмотря на то, что применение объекта Selection — самый простой и наглядный метод редактирования текста, и чаще всего именно он используется макрорекордером, на практике программисты применяют его редко. Объясняется это очень просто: при использовании этого объекта мы слишком зави-

Программирование в Word

219

сим от действий пользователя. Если во время выполнения нашего кода пользователь проявит инициативу и начнет щелкать по документу мышью, результат может быть непредсказуемым. Защититься от вмешательства пользователя можно двумя способами:

работать со скрытым (т. е. невидимым) документом или, возможно, со скрытым экземпляром Word. Для включения и отключения видимости можно использовать свойство Visible объектов Document или Application;

более удобный способ — вместо объекта Selection использовать объекты Range и Bookmark, о которых будет рассказано в следующих разделах.

10.5.2. Свойства и методы объекта Selection

Вначале расскажем о самых часто используемых свойствах объекта

Selection.

Bookmarks — возвращает коллекцию Bookmarks, т. е. все закладки, которые имеются в выделенном фрагменте текста. Закладки — один из самых часто используемых объектов в приложениях VBA с использованием Word. Подробнее о них будет рассказано в разд. 10.5.

Start и End — свойства, которые определяют номера первого и последнего символа в выделении (по отношению к тексту документа или другим его частям, например, к сноске). Первая позиция в тексте документа — всегда 0. Если вы создаете документ из неизменяемого шаблона, можно использовать эти свойства, чтобы найти нужное место в документе для ввода текста (однако этот способ не очень рекомендуется, потому что при правке шаблона вам придется править много программного кода).

ExtendMode — переключает пользователя в режим выделения текста, когда нажатие клавиш со стрелками, <Home> и <End> приводит не к перемещению указателя ввода, а к изменению выделения.

Find — очень важное свойство, которое возвращает объект Find. Подробнее об этом объекте и о его вложенном объекте Replace будет рассказано в

разд. 10.6.5.

Flags — свойство, которое позволяет проверить или изменить некоторые моменты, связанные с выделением: является ли оно активным, находится ли в конце строки и т. п. Регулирует одновременно пять параметров при помощи битовой маски.

Font — возвращает объект Font, при помощи которого можно управлять оформлением текста в выделении. Доступны все возможности, которые есть на графическом интерфейсе в меню Формат | Шрифт. Например, чтобы назначить выделенному тексту шрифт Arial 10 pt, можно использовать код:

Selection.Font.Name = «Arial»

Selection.Font.Size = 10

Information — важнейшее свойство объекта Selection для целей проверок. Возвращает огромное количество информации о выделении (в какой части документа, внутри таблицы или нет, включены ли клавиши <CapsLock> и <NumLock>, включен ли режим «Замена» при вводе текста, на какой странице находится выделение и сколько страниц и т. п.).

IPAtEndOfLine — возвращает True, если курсор ввода текста (insertion point — IP) находится в конце строки (в крайнем правом положении при выравнивании).

LanguageId — позволяет пометить выделение, как написанное на определенном языке. Правильное определение языка позволяет избежать проблем при проверке орфографии.

NoProofing — отменяет для выделения проверку орфографии и грамматики. Очень рекомендуется помечать таким образом текст с программным кодом, списками фамилий, названиями фирм, специфическими терминами и т. п.

Range — создает из выделения объект Range.

StoryType — еще одно свойство для проверок. Определяет тип текста документа, в котором находится выделение.

Text — самое важное свойство объекта Selection. Позволяет ввести текст на месте выделения (или в том месте, где стоит указатель). Например, чтобы 100 раз напечатать текст «Привет!», можно воспользоваться кодом:

For i = 0 To 100

Selection.Text = «Привет!»

Selection.EndOf

Next

Метод EndOf() здесь позволяет перейти в конец текущего выделения. Он нужен здесь для того, чтобы не перезаписывать один и тот же текст 100 раз, поскольку после ввода текст остается выделенным.

Type — еще одно проверочное свойство, которое позволяет предупредить ошибку, если пользователь выделил что-то неположенное. Например, при обычном выделении значение этого свойства будет равно 1, а если выделены несмежные участки текста — 2.

Words — позволяет вернуть коллекцию Words. Эта коллекция состоит из набора объектов Range, каждому из которых соответствует слово в выделенном тексте.

Программирование в Word

221

Методов у объекта Selection гораздо больше, чем свойств.

Calculate() — позволяет посчитать математическое выражение прямо в процессе ввода текста и вернуть его результат (используя только тип дан-

ных Single).

ClearFormatting() — очищает форматирование (и на уровне текста, и на уровне параграфа). Этот метод можно применять не только для объекта

Selection, но и для объектов Find и Replace.

Collapse() — превращает выделение в указатель вставки. Можно использовать два варианта: указатель вставки помещается на начало выделения или на конец выделения. Очень удобно, если вам требуется только вставить новый текст без удаления старого.

Copy(), CopyAsPicture(), Cut(), Paste() и Delete() — эти методы можно использовать для копирования выделенного участка документа, копирования и вставки в виде изображения, вырезания, вставки и удаления соответственно.

EndKey() — этот метод так называется, поскольку он очень похож по функциональности на нажатие клавиши <End>. Он позволяет (в зависимости от переданных параметров) перейти на конец строки, столбца или записи в таблице (по умолчанию на конец строки) и либо выделить до этого места, либо установить на нем указатель вставки. Чтобы перевести курсор вставки на конец текста документа, можно воспользоваться кодом:

Selection.EndKey Unit:=wdStory, Extend:=wdMove

Если же нужно перейти на начало элемента, используется аналогичный метод HomeKey().

EndOf() — по функциональности практически идентичен методу EndKey(). Он позволяет перейти на конец символа, слова, предложения, абзаца, секции, текста документа, таблицы и т. п. Различие между этими методами заключается в том, что EndKey() работает только с текущим элементом текста, а при помощи EndOf() можно, например, найти следующую таблицу в выделенной части документа и перейти на ее конец. Чтобы перейти на начало элемента текста, существует метод StartOf().

Expand() — расширяет выделение на слово, предложение, абзац и т. п., в зависимости от переданного параметра. Метод Extend() позволяет расширить выделение (вместо слова — предложение, вместо предложения — абзац и т. п.). Метод, обратный методу Expand(), — Shrink().

GoTo() — работает практически аналогично такому же методу объекта

Document.

Insert…

GotoNext() — перейти на следующую строку, страницу, закладку и т. п. Аналогично работает метод GotoPrevious() (переход на предыдущий элемент).

Назначение многочисленных методов с префиксом очевидно. Чаще всего используются методы InsertBefore() (вставить перед выделением) и InsertAfter() (вставить после выделения).

Методы с префиксом Move… также встречаются едва ли не в любой программе, связанной с вводом текста в Word. Самые важные и удобные из этих методов:

MoveLeft(), MoveRight(), MoveUp(), MoveDown(), MoveEnd(), MoveStart()

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

MoveStartUntil(), MoveStartWhile(), MoveEndUntil(), MoveStartWhile()

отличаются тем, что курсор вставки перемещается не на определенное количество символов, а пока не будет найдено (или пока встречается) определенная последовательность символов. Также очень удобно использовать эти методы для установки курсора в нужное место в документе для ввода текста;

Move() — более гибкий метод. Он позволяет отсчитывать не только оп-

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

Next() — позволяет перейти вперед на определенное количество символов, слов, предложений, абзацев, разделов, столбцов и строк в таблице и т. п. Переход назад осуществляет метод Previous().

NextField() — позволяет перейти на следующее поле в форме или проверить, не кончились ли поля (в этом случае метод вместо объекта Field возвратит Nothing). Есть также метод PreviousField().

SelectColumn(), SelectRow(), SelectCell() — очень удобные методы для выполнения различных операций в таблице Word.

SelectCurrentAlignment(), SelectCurrentFont(), SelectCurrentIndent(),

SelectCurrentColor() и т. п. — выделяют текст до изменения выравнивания, шрифта, отступа, цвета и т. п. Также очень удобно использовать эти

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Like this post? Please share to your friends:
  • Word vba selection end
  • Word vba selection copy
  • Word vba selection all
  • Word vba select paragraphs
  • Word vba save as document