Word vba selection all

td


  • #1

In VBA how do you
1. select all text in a document?
2. Copy the selected text to the clipboard?
Thanks
td

Advertisements

Helmut Weber


  • #2

Hi,

In VBA how do you
1. select all text in a document?
2. Copy the selected text to the clipboard?

without going into detail, try:

ActiveDocument.Range.Select
ActiveDocument.Range.Copy

whereby «ActiveDocument.Range.Select» is redundant.

And, that copies _everything_, not only text.


Greetings from Bavaria, Germany

Helmut Weber, MVP WordVBA

Win XP, Office 2003
«red.sys» & Chr$(64) & «t-online.de»

td


  • #3

Hello Helmut
When you say «Copies everything» does that include the FILE header & footer?
I am very happy to copy «everything» except these as they contain links to
non-existant files including templates. The object of the exercise is to get
rid of these non-existant links. Manual SelectAll, Copy and Paste into new
document does appear to solve the problem
Many thanks for your input
td

Helmut Weber


  • #4

Hi td,

if you exclude the last paragraph mark,
which is what in former times was the end-of-doc mark,
and which carries a lot more of information
than an ordinary paragraph mark,
then you get nothing but the content of the main story.

Like, this time using selection:

Sub testcopy()
Selection.WholeStory
Selection.End = Selection.End — 1
Selection.Copy
End Sub


Greetings from Bavaria, Germany

Helmut Weber, MVP WordVBA

Win XP, Office 2003
«red.sys» & Chr$(64) & «t-online.de»

td


Advertisements

Grateful


  • #6

re
ActiveDocument.Range.Select
ActiveDocument.Range.Copy

I want to thank you so much for this code. I had been looking for this
ability, to include Headers/Footers, etc. and only came up with answers that
it couldn’t be done.

This is terrific. Thank you, Danke

Advertisements

In this article I will explain how you can use VBA for word to select text.


Select Entire Document:

Using the code snippet below you can select the entire word document:

Selection.WholeStory

Result:

Word VBA Select All


Select The Current Line:

Using the code below you can select the current line:

Sub main()
Selection.HomeKey Unit:=wdLine
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
End Sub

 Assume the cursor is somewhere in the middle of the line:

Word VBA Move Cursor To Start of Line
The first line moves the cursor to the start of the line:

Selection.HomeKey Unit:=wdLine

The next line move the cursor to the end of the line while selecting the text:

Selection.EndKey Unit:=wdLine, Extend:=wdExtend

Result:

Word VBA Select Line, Result


Select to End of Line:

The code below will only select till the end of the line:

Selection.EndKey Unit:=wdLine, Extend:=wdExtend

Result:

Word VBA Select Line, To End


Select to Start of Line:

The code below will select text up to the start of the line:

Selection.HomeKey Unit:=wdLine, Extend:=wdExtend

Result:

Word VBA Select Line, To Start


Select Certain Number of Characters:

Lets say we need to select only a certain number of characters from the current location of the cursor. The code below will select 5 characters to the right:

Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend

Result:

Word VBA Select 5 Charcter to right
The code below will select 10 characters to the left:

Selection.MoveLeft Unit:=wdCharacter, Count:=10, Extend:=wdExtend

Result:

Word VBA Select 10 Charcter to left


Select Text up to a Certain Character:

You might want to select text until you reach a certain character. For example a space character, “*”, “/”, …

The code below selects text until a space character is reached:

Sub test()
Dim flag As Boolean
flag = True
While flag = True
    Selection.MoveRight Unit:=wdCharacter, Count:=1, _
    Extend:=wdExtend
    'checks the last character to see if its a space
    If Strings.Right(Selection.Range.Text, 1) = " " Then
        'if it was a space the loop flag will end
        flag = False
    End If
Wend
End Sub

Word VBA, Select up to space
Result:

Word VBA, Select up to space, Result
The line below selects one additional character to the right:

Selection.MoveRight Unit:=wdCharacter, Count:=1, _
Extend:=wdExtend

 The if statement below checks to see if the last character selected is a space character:

If Strings.Right(Selection.Range.Text, 1) = " " Then
...
End If

For more information about the Strings.Right function please see the article below. Although the article was written for Excel, it can be extended to VBA for Word:

  • Excel VBA String Proccessing and Manipulation

See also:

  • Word VBA, Move Cursor to Start of Document
  • Word VBA, Move Cursor to End of Document
  • Word VBA, Move Cursor to End of Line
  • Word VBA, Move Cursor to Start of Line
  • Excel VBA String Processing and Manipulation
  • Word VBA Bookmarks
  • Word VBA, Read All Lines

If you need assistance with your code, or you are looking for a VBA programmer to hire feel free to contact me. Also please visit my website  www.software-solutions-online.com

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

Selection object (Word)

vbawd10.chm2421

vbawd10.chm2421

word

Word.Selection

7b574a91-c33e-ecfd-6783-6b7528b2ed8f

05/23/2019

high

Selection object (Word)

Represents the current selection in a window or pane. A selection represents either a selected (or highlighted) area in the document, or it represents the insertion point if nothing in the document is selected. There can be only one Selection object per document window pane, and only one Selection object in the entire application can be active.

[!IMPORTANT]
This method has changed. Using VBA Selection commands like Selection.BoldRun on user selection with Comments no longer applies bold formatting on user-selected text or Selection.TypeTxt command or on user selection with Comments no longer inserts text.

Remarks

Use the Selection property to return the Selection object. If no object qualifier is used with the Selection property, Microsoft Word returns the selection from the active pane of the active document window. The following example copies the current selection from the active document.

The following example deletes the selection from the third document in the Documents collection. The document does not have to be active to access its current selection.

Documents(3).ActiveWindow.Selection.Cut

The following example copies the selection from the first pane of the active document and pastes it into the second pane.

ActiveDocument.ActiveWindow.Panes(1).Selection.Copy 
ActiveDocument.ActiveWindow.Panes(2).Selection.Paste

The Text property is the default property of the Selection object. Use this property to set or return the text in the current selection. The following example assigns the text in the current selection to the variable strTemp, removing the last character if it is a paragraph mark.

Dim strTemp as String 
 
strTemp = Selection.Text 
If Right(strTemp, 1) = vbCr Then _ 
 strTemp = Left(strTemp, Len(strTemp) - 1)

The Selection object has various methods and properties with which you can collapse, expand, or otherwise change the current selection. The following example moves the insertion point to the end of the document and selects the last three lines.

Selection.EndOf Unit:=wdStory, Extend:=wdMove 
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend 
Selection.MoveUp Unit:=wdLine, Count:=2, Extend:=wdExtend

The Selection object has various methods and properties with which you can edit selected text in a document. The following example selects the first sentence in the active document and replaces it with a new paragraph.

Options.ReplaceSelection = True 
ActiveDocument.Sentences(1).Select 
Selection.TypeText "Material below is confidential." 
Selection.TypeParagraph

The following example deletes the last paragraph of the first document in the Documents collection and pastes it at the beginning of the second document.

With Documents(1) 
 .Paragraphs.Last.Range.Select 
 .ActiveWindow.Selection.Cut 
End With 
 
With Documents(2).ActiveWindow.Selection 
 .StartOf Unit:=wdStory, Extend:=wdMove 
 .Paste 
End With

The Selection object has various methods and properties with which you can change the formatting of the current selection. The following example changes the font of the current selection from Times New Roman to Tahoma.

If Selection.Font.Name = "Times New Roman" Then _ 
 Selection.Font.Name = "Tahoma"

Use properties like Flags, Information, and Type to return information about the current selection. Use the following example in a procedure to determine whether there is anything selected in the active document; if there is not, the rest of the procedure is skipped.

If Selection.Type = wdSelectionIP Then 
 MsgBox Prompt:="You have not selected any text! Exiting procedure..." 
 Exit Sub 
End If

Even when a selection is collapsed to an insertion point, it is not necessarily empty. For example, the Text property will still return the character to the right of the insertion point; this character also appears in the Characters collection of the Selection object. However, calling methods like Cut or Copy from a collapsed selection causes an error.

It is possible for the user to select a region in a document that does not represent contiguous text (for example, when using the Alt key with the mouse). Because the behavior of such a selection can be unpredictable, you may want to include a step in your code that checks the Type property of a selection before performing any operations on it (Selection.Type = wdSelectionBlock).

Similarly, selections that include table cells can also lead to unpredictable behavior. The Information property will tell you if a selection is inside a table (Selection.Information(wdWithinTable) = True). The following example determines if a selection is normal (for example, it is not a row or column in a table, it is not a vertical block of text); you could use it to test the current selection before performing any operations on it.

If Selection.Type <> wdSelectionNormal Then 
 MsgBox Prompt:="Not a valid selection! Exiting procedure..." 
 Exit Sub 
End If

Because Range objects share many of the same methods and properties as Selection objects, using Range objects is preferable for manipulating a document when there is not a reason to physically change the current selection. For more information about Selection and Range objects, see Working with the Selection object and Working with Range objects.

Methods

  • BoldRun
  • Calculate
  • ClearCharacterAllFormatting
  • ClearCharacterDirectFormatting
  • ClearCharacterStyle
  • ClearFormatting
  • ClearParagraphAllFormatting
  • ClearParagraphDirectFormatting
  • ClearParagraphStyle
  • Collapse
  • ConvertToTable
  • Copy
  • CopyAsPicture
  • CopyFormat
  • CreateAutoTextEntry
  • CreateTextbox
  • Cut
  • Delete
  • DetectLanguage
  • EndKey
  • EndOf
  • EscapeKey
  • Expand
  • ExportAsFixedFormat
  • ExportAsFixedFormat2
  • Extend
  • GoTo
  • GoToEditableRange
  • GoToNext
  • GoToPrevious
  • HomeKey
  • InRange
  • InsertAfter
  • InsertBefore
  • InsertBreak
  • InsertCaption
  • InsertCells
  • InsertColumns
  • InsertColumnsRight
  • InsertCrossReference
  • InsertDateTime
  • InsertFile
  • InsertFormula
  • InsertNewPage
  • InsertParagraph
  • InsertParagraphAfter
  • InsertParagraphBefore
  • InsertRows
  • InsertRowsAbove
  • InsertRowsBelow
  • InsertStyleSeparator
  • InsertSymbol
  • InsertXML
  • InStory
  • IsEqual
  • ItalicRun
  • LtrPara
  • LtrRun
  • Move
  • MoveDown
  • MoveEnd
  • MoveEndUntil
  • MoveEndWhile
  • MoveLeft
  • MoveRight
  • MoveStart
  • MoveStartUntil
  • MoveStartWhile
  • MoveUntil
  • MoveUp
  • MoveWhile
  • Next
  • NextField
  • NextRevision
  • NextSubdocument
  • Paste
  • PasteAndFormat
  • PasteAppendTable
  • PasteAsNestedTable
  • PasteExcelTable
  • PasteFormat
  • PasteSpecial
  • Previous
  • PreviousField
  • PreviousRevision
  • PreviousSubdocument
  • ReadingModeGrowFont
  • ReadingModeShrinkFont
  • RtlPara
  • RtlRun
  • Select
  • SelectCell
  • SelectColumn
  • SelectCurrentAlignment
  • SelectCurrentColor
  • SelectCurrentFont
  • SelectCurrentIndent
  • SelectCurrentSpacing
  • SelectCurrentTabs
  • SelectRow
  • SetRange
  • Shrink
  • ShrinkDiscontiguousSelection
  • Sort
  • SortAscending
  • SortByHeadings
  • SortDescending
  • SplitTable
  • StartOf
  • ToggleCharacterCode
  • TypeBackspace
  • TypeParagraph
  • TypeText
  • WholeStory

Properties

  • Active
  • Application
  • BookmarkID
  • Bookmarks
  • Borders
  • Cells
  • Characters
  • ChildShapeRange
  • Columns
  • ColumnSelectMode
  • Comments
  • Creator
  • Document
  • Editors
  • End
  • EndnoteOptions
  • Endnotes
  • EnhMetaFileBits
  • ExtendMode
  • Fields
  • Find
  • FitTextWidth
  • Flags
  • Font
  • FootnoteOptions
  • Footnotes
  • FormattedText
  • FormFields
  • Frames
  • HasChildShapeRange
  • HeaderFooter
  • HTMLDivisions
  • Hyperlinks
  • Information
  • InlineShapes
  • IPAtEndOfLine
  • IsEndOfRowMark
  • LanguageDetected
  • LanguageID
  • LanguageIDFarEast
  • LanguageIDOther
  • NoProofing
  • OMaths
  • Orientation
  • PageSetup
  • ParagraphFormat
  • Paragraphs
  • Parent
  • PreviousBookmarkID
  • Range
  • Rows
  • Sections
  • Sentences
  • Shading
  • ShapeRange
  • Start
  • StartIsActive
  • StoryLength
  • StoryType
  • Style
  • Tables
  • Text
  • TopLevelTables
  • Type
  • WordOpenXML
  • Words
  • XML

See also

  • Word Object Model Reference

[!includeSupport and feedback]

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

Свойства и методы объекта Word.Selection, программная работа с выделенным участком текста в VBA

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

  • Bookmarks — возвращает коллекцию Bookmarks, то есть все закладки, которые имеются в выделенном участке текста. Закладки — один из самых часто используемых объектов в приложениях VBA с использованием Word. Подробнее о них будет рассказано в специальном разделе.
  • Start и End — свойства, которые определяют номер первого и последнего символа в выделении (по отношению к document story — то есть текста документа, или другого story — например, сносок). Первая позиция в document story — всегда 0. если вы создаете документ из неизменяемого шаблона, вполне можно использовать эти свойства, чтобы найти нужное место в документе для ввода текста (однако этот способ не очень рекомендуется — по причине того, что при правке шаблона вам придется править много программного кода).
  • ExtendMode — переключиться в режим выделения текста, когда нажатие клавиш со стрелками, и приводит не к перемещению указателя ввода, а к изменению выделения.
  • Find — очень важное свойство, которое возвращает объект Find. Подробнее про этот объект и про его вложенный объект Replace будет рассказано в разделе, посвященном поиску и замене текста.
  • Flags — свойство, которое позволяет проверить или изменить некоторые моменты, связанные с выделением: является ли оно активным, находится ли в конце строки и т.п. Регулирует пять параметров одновременно при помощи битовой маски.
  • Font — возвращает объект Font, при помощи которого можно управлять оформлением текста в выделении. Доступны все возможности, которые есть на графическом интерфейсе в меню Формат->Шрифт. Например, чтобы назначить выделенному тексту шрифт Arial размера 10, можно использовать код
  • Information — важнейшее свойство объекта Selection для целей проверок. Возвращает огромное количество информации о выделении (в какой части документа, внутри таблицы или нет, включены ли клавиши и , включен ли режим «Замена» при вводе текста, на какой странице находится выделение и сколько всего страниц и т.п.).
  • IPAtEndOfLine — возвращает True, если курсор ввода текста (insertion point — IP) находится в конце строки (крайнем правом положении при выравнивании).
  • LanguageId — возможность пометить выделение, как написанное на определенном языке. Правильное определение языка позволяет избежать проблем при проверке орфографии.
  • NoProofing — возможность отменить для выделения проверку орфографии и грамматики. Очень рекомендуется помечать таким образом текст с программным кодом, списками фамилий, названий фирм, специфическими терминами и т.п.
  • Range — возможность создать из выделения объект Range.
  • StoryType — еще одно свойство для проверок. Определяет тип document story, в котором находится выделение.
  • Text — самое важное свойство объекта Selection. Позволяет ввести текст на месте выделения (или в месте, где стоит указатель). Например, чтобы 100 раз напечатать текст «Привет!», можно воспользоваться кодом:

For i = 0 To 100

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

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

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

  • Calculate() — возможность посчитать математическое выражение прямо в процессе ввода текста и вернуть его результат (только используя тип данных Single).
  • ClearFormatting() — очистить форматирование (и на уровне текста, и на уровне параграфа). Свойство можно применять не только для объекта Selection, но и для объектов Find и Replace.
  • Collapse() — превратить выделение в точку вставки. Можно использовать два варианта: точка вставки на начало выделения и на конец выделения. Очень удобно, если вам требуется только вставить новый текст без удаления старого.
  • Copy(), CopyAsPicture(), Cut(), Paste() и Delete() — комментировать эти методы, видимо, необходимости нет.
  • EndKey() — этот метод так называется, поскольку он очень похож по функциональности на нажатие клавиши . Он позволяет (в зависимости от переданных параметров) перейти на конец DocumentStory, строки, столбца или записи в таблице (по умолчанию — на конец строки) и либо выделить до этого момента, либо установить на нем точку вставки. Чтобы вставить перевести курсор вставки на конец текста документа, можно воспользоваться командой

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

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

  • EndOf() — в том же режиме, что и EndKey(), перейти на конец символа, слова, предложения, абзаца, секции, текста документа, таблицы и т.п. Чтобы перейти на начало, существует метод StartOf().
  • Expand() — расширить выделение на слово, предложение, абзац и т.п. — в зависимости от переданного параметра. Метод Extend() позволяет расширить выделение (вместо слова — предложение, вместо предложения — абзац и т.п.). Метод, обратный методу Expand()Shrink().
  • GoTo() — работает практически аналогично такому же метода объекта Document.
  • GotoNext() — перейти на следующую строку, страницу, закладку и т.п. Аналогично работает метод GotoPrevious() (переход на предыдущий элемент).
  • назначение многочисленных методов Insert() очевидно. Чаще всего используются методы 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.
  • SelectCurrent… Alignment(), Font(), Indent(), Color() и т.п. — выделить текст до изменения выравнивания, шрифта, отступа, цвета и т.п. Также очень удобно для целей форматирования или для выделения специальным образом добавленного текста.
  • SetRange() — самый простой способ настроить выделение. Передаются номер первого и последнего символа того участка текста, который нужно выделить. Нумерация начинается с 0, скрытые служебные символы также считаются. Такой же метод существует для объекта Range.
  • Sort(), SortAscending(), SortDescending() — возможность расставить по алфавиту, датам и т.п. абзацы или столбцы в таблице (которые входят в выделение). Этот метод сможет сэкономить вам множество времени и сил.
  • ToggleCharacterCode() — позволяет ввести код служебного символа и тут же преобразовать его в символ Unicode. Например, чтобы ввести символ Евро, можно воспользоваться командами
  • TypeText() — самый простой, надежный и часто используемый метод ввода текста. Принимает единственный параметр — текст, который нужно ввести. Будет ли перезаписан текущий текст выделения, зависит от свойства ReplaceSelection объекта Options.
  • WholeStory() — выделить текущую часть документа (document story). Обычно используется, чтобы выделить текст документа без сносок, редакторской правки, колонтитулов и т.п.

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

Всем привет, с вами автор блога 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 — включить Авто-подбор

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо за внимание. Автор блога Владимир Баталий

Word vba selection

Объекты, задающие программный проект, являются общими для всех документов Office 2000, в том числе и документа Word. Этой важной теме — программной работе с такими объектами посвящена лекция 4

Текст и объекты Range и Selection

Основной частью документа Word является, конечно, текст этого документа. Уже было сказано, как структурирован текст документа, рассмотрены коллекции — Characters , Words , Sentences , Paragraphs , которые позволяют работать с символами, словами, предложениями и абзацами текста. Говорил я также и о том, что только этими коллекциями не обойтись, и необходим общий класс объектов, позволяющий задать произвольную область текста. Таковыми являются два важных класса Range и Selection . Объекты этих классов широко используются при работе с текстом. Документы, поддокументы, разделы, все вышеупомянутые коллекции от Characters до Words имеют метод или свойство Range , возвращающие в качестве результат объект Range . Каждый объект Range задает область определения некоторого объекта, включая текст и все объекты, связанные с этим текстом — комментарии, ссылки и прочее. Так, если некоторый объект вызвал метод Range , то возвращаемый объект Range будет содержать область определения объекта, вызвавшего метод.

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

Объект Document имеет метод Range , возвращающий объект Range , и метод Select , создающий объект Selection . Метод Range — это функция, возвращающая в качестве результата объект Range ; метод Select — это процедура без параметров, которая создает объект Selection в качестве побочного эффекта. Заметьте существенную разницу между методами Range и Selection . В первом случае возвращается сам объект и поэтому можно запомнить возвращаемый объект и в программе одновременно работать с несколькими такими объектами. В случае вызова метода Selection объект не возвращается, следовательно, запомнить его нельзя, что и гарантирует уникальность объекта Selection .

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

Объекты Range и Selection столь же многообразны по своей структуре, как и объект Document . И даже большинство свойств у этих трех объектов одни и те же. Эти три объекта являются схожими. Это понятно, так как большинство частей документа: предложения, абзацы, разделы, таблицы, рисунки, комментарии, ссылки и многое другое — может составлять любую подобласть документа, в том числе и выделенную подобласть. Значит, большинство ранее описанных частей документа являются и частями (свойствами) объектов Range и Selection . Это приятно — ведь с большинством свойств этих объектов мы уже знакомы!

Объект Range напоминает матрешку: в каждую область вложена область поменьше. Вот пример корректного (хоть и не самого эффективного) задания объекта Range :

Сколько объектов Range упоминается в этом предложении? Правильный ответ: 6, но не 3. Напомним: на нижнем уровне отсутствуют классы, определяющие символ, слово или предложение — все эти объекты принадлежат классу Range .

Для объекта Selection нельзя построить такую хитрую цепочку вложений — ведь метод Select не возвращает объект Selection . Но можно построить такую же «хитрую» последовательность операторов, которая задает сужающуюся область выделения:

Работа с текстом

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

Говоря в этом параграфе о выделении, я имею в виду не применение метода Select , а выделение в более широком смысле, умение задать некоторую подобласть данной области. Выделить некоторую часть текста означает, по существу, определение объекта Range или Selection . Оба объекта задают непрерывную область, а их свойства Start и End позволяют задать начало и конец области. Меняя эти свойства, можно задать нужную область выделения. Этот основной способ выделения мы не раз демонстрировали в наших примерах:

В первом случае при задании области используются параметры Start и End , во втором — задается вся область данного объекта. Область может изменяться автоматически при добавлении или удалении из нее части текста. Изменить область можно и путем ее перемещения. Этим занимается специальная группа методов перемещения Move. Прежде чем говорить о перемещении, рассмотрим сжатие области. Нередко нужна пустая область — точка вставки, параметры Start и End которой совпадают. Поэтому простейший способ сжатия — задать совпадающие значения этих параметров:

Для сжатия области можно применять специальный метод сжатия — Collapse(Direction). Область стягивается в начальную или конечную позицию. Направление сжатия задает параметр Direction, принимающий значения wdCollapseStart или wdCollapseEnd . По умолчанию область стягивается в начальную точку (значение параметра: wdCollapseStart ). Если сжимается абзац, и он стягивается в конечную точку, точка вставки переносится за метку конца абзаца и устанавливается в начало следующего абзаца. Если такой эффект нежелателен, после сжатия применяется метод перемещения MoveEnd , передвигающий точку вставки назад на один символ:

Если есть методы сжатия области, то должны быть и методы расширения области. Основным из них является метод Expand (Unit). В зависимости от значения параметра Unit область можно расширить на слово, предложение, абзац, раздел, на строку или столбец таблицы, или на всю таблицу. Для объекта Selection область можно расширить на всю строку. Для расширения области на весь фрагмент можно использовать метод WholeStory , что впрочем эквивалентно вызову метода Expand (Unit := wdStory)

Метод Move является основным методом перемещения. Остальные методы — в той или иной степени его модификации. Метод Move ( Unit , Count ) сжимает область в точку, стягивая ее в начало или конец, и затем перемещает точку вставки. Параметр Unit определяет единицы перемещения, а Count — количество этих единиц и направление стягивания и перемещения (по умолчанию 1). Положительные значения этого параметра задают стягивание к концу и перемещение вперед, отрицательные — стягивание в начало и перемещение назад. Само стягивание означает перемещение на одну единицу. Метод возвращает количество единиц, на которое фактически произошло перемещение, или 0, если оно не осуществлено. Параметр Unit принимает значения wdCharacter (по умолчанию), wdWord, wdSentence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow и wdTable.

Методы перемещения на сам текст не влияют — лишь изменяют область, заданную объектами Range и Selection . Поэтому эти методы применимы только к переменным типа Range , но не к фиксированным областям. Например, запись:

не имеет эффекта, поскольку область первого абзаца — вещь неизменяемая.

Метод Move стягивает область в точку, которая и перемещается, поэтому после его выполнения область исчезает, и остается только точка вставки. Методы MoveStart и MoveEnd перемещают начальную или конечную точку области, обычно расширяя тем самым область.

Конечно, для перемещения по тексту документу есть много различных возможностей, кроме группы методов Move . Стоит упомянуть группу методов Next, основным из которых является метод Next(Unit,Count). Основное отличие от метода Move с теми же параметрами состоит в том, что метод Next возвращает сам объект Range , в отличие от метода Move , возвращающего число символов, на которое произошло перемещение. Напомним также о тех возможностях перемещения, которыми обладают объекты Browser и Hyperlink , напомним о закладках, специально предназначенных для перехода к ним.

Метод Delete позволяет удалить текст. Вызванный без параметров, он удаляет вызывающий его объект Range или Selection . Если он применен в форме Delete(Unit,Count), удаляется часть текста в указанной области. Параметр Unit задает единицы, но при удалении возможны только два значения: wdWord и wdCharacter. Параметр Count задает количество удаляемых единиц. Если область стянута в точку, удаляются символы перед точкой вставки или после нее в зависимости от знака параметра Count . Вот несколько примеров:

Группа методов Insert объектов Range и Selection позволяет осуществлять вставки в документ. Для вставки текста используются методы InsertBefore(Text) и InsertAfter(Text). Параметр Text типа String задает текст, вставляемый до или после области, заданной объектами Range или Selection . После вставки текста область автоматически расширяется, включая в себя добавляемый текст. Вот пример вставки нового абзаца в начало документа:

Свойство Text позволяет заменять текст в выделенной области, поэтому нет нужды вызывать метод Insert(Text), — лучше использовать свойство. Методы InsertBefore и InsertAfter безопасны, так как текст добавляется, не изменяя содержимого области. При вставке внутрь области, например, при использовании метода InsertSymbol или InsertParagraph, заменяется содержимое области. Эта вроде бы безобидная программка сотрет все содержимое документа, заменив его пустым абзацем:

Говоря о методах вставки текста, нельзя не упомянуть о таком мощном методе, как InsertFile — он позволяет вставлять не только текст или таблицу Excel, но и целый документ, хранящийся в файле. Вот простой пример вызова метода, при котором в начало активного документа вставляется существующий документ:

Работа с буфером

Известно, как полезен буфер при работе с одним и, особенно, с несколькими документами. Объекты Range и Selection в полной мере позволяют задействовать все возможности буфера. Метод Copy, не имеющий параметров, копирует объект (содержимое области) в буфер. Метод Cut, действуя аналогично, копирует объект в буфер, заодно удаляя его. Заметьте, что в отличие от предыдущей версии, теперь метод Cut работает, как ему положено, не только копируя объект, но и удаляя его, ранее удаления не происходило, вместо этого объект, вызывавший метод стягивался в точку. Метод Paste позволяет приклеить объект, помещенный в буфер. Рассмотрим пример:

Метод Paste позволяет «вклеить» содержимое буфера в область, заданную объектами Range и Selection . Эта операция опасна, так как происходит замена, а не добавление текста. Поэтому обычно метод Paste применяется к объектам Range и Selection , стянутым в точку вставки. В выполнении этого метода есть нюансы. У объекта Range содержимое буфера включается в его область, Объект Selection остается точкой вставки, расположенной после текста, добавленного из буфера.

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

Иногда в буфер копируют формат текста. Этим занимается метод CopyFormat , копирующий формат по первому символу объекта Selection . Если этот символ — метка абзаца, копируется формат абзаца. Методом CopyFormat обладает только объект Selection .

Метод PasteFormat применяет форматирование, хранящееся в буфере к объекту Selection .

Метод PasteSpecial позволяет явно управлять форматированием в момент вставки объекта из буфера.

Word vba selection

Объекты, задающие программный проект, являются общими для всех документов Office 2000, в том числе и документа Word. Этой важной теме — программной работе с такими объектами посвящена лекция 4

Текст и объекты Range и Selection

Основной частью документа Word является, конечно, текст этого документа. Уже было сказано, как структурирован текст документа, рассмотрены коллекции — Characters , Words , Sentences , Paragraphs , которые позволяют работать с символами, словами, предложениями и абзацами текста. Говорил я также и о том, что только этими коллекциями не обойтись, и необходим общий класс объектов, позволяющий задать произвольную область текста. Таковыми являются два важных класса Range и Selection . Объекты этих классов широко используются при работе с текстом. Документы, поддокументы, разделы, все вышеупомянутые коллекции от Characters до Words имеют метод или свойство Range , возвращающие в качестве результат объект Range . Каждый объект Range задает область определения некоторого объекта, включая текст и все объекты, связанные с этим текстом — комментарии, ссылки и прочее. Так, если некоторый объект вызвал метод Range , то возвращаемый объект Range будет содержать область определения объекта, вызвавшего метод.

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

Объект Document имеет метод Range , возвращающий объект Range , и метод Select , создающий объект Selection . Метод Range — это функция, возвращающая в качестве результата объект Range ; метод Select — это процедура без параметров, которая создает объект Selection в качестве побочного эффекта. Заметьте существенную разницу между методами Range и Selection . В первом случае возвращается сам объект и поэтому можно запомнить возвращаемый объект и в программе одновременно работать с несколькими такими объектами. В случае вызова метода Selection объект не возвращается, следовательно, запомнить его нельзя, что и гарантирует уникальность объекта Selection .

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

Объекты Range и Selection столь же многообразны по своей структуре, как и объект Document . И даже большинство свойств у этих трех объектов одни и те же. Эти три объекта являются схожими. Это понятно, так как большинство частей документа: предложения, абзацы, разделы, таблицы, рисунки, комментарии, ссылки и многое другое — может составлять любую подобласть документа, в том числе и выделенную подобласть. Значит, большинство ранее описанных частей документа являются и частями (свойствами) объектов Range и Selection . Это приятно — ведь с большинством свойств этих объектов мы уже знакомы!

Объект Range напоминает матрешку: в каждую область вложена область поменьше. Вот пример корректного (хоть и не самого эффективного) задания объекта Range :

Сколько объектов Range упоминается в этом предложении? Правильный ответ: 6, но не 3. Напомним: на нижнем уровне отсутствуют классы, определяющие символ, слово или предложение — все эти объекты принадлежат классу Range .

Для объекта Selection нельзя построить такую хитрую цепочку вложений — ведь метод Select не возвращает объект Selection . Но можно построить такую же «хитрую» последовательность операторов, которая задает сужающуюся область выделения:

Работа с текстом

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

Говоря в этом параграфе о выделении, я имею в виду не применение метода Select , а выделение в более широком смысле, умение задать некоторую подобласть данной области. Выделить некоторую часть текста означает, по существу, определение объекта Range или Selection . Оба объекта задают непрерывную область, а их свойства Start и End позволяют задать начало и конец области. Меняя эти свойства, можно задать нужную область выделения. Этот основной способ выделения мы не раз демонстрировали в наших примерах:

В первом случае при задании области используются параметры Start и End , во втором — задается вся область данного объекта. Область может изменяться автоматически при добавлении или удалении из нее части текста. Изменить область можно и путем ее перемещения. Этим занимается специальная группа методов перемещения Move. Прежде чем говорить о перемещении, рассмотрим сжатие области. Нередко нужна пустая область — точка вставки, параметры Start и End которой совпадают. Поэтому простейший способ сжатия — задать совпадающие значения этих параметров:

Для сжатия области можно применять специальный метод сжатия — Collapse(Direction). Область стягивается в начальную или конечную позицию. Направление сжатия задает параметр Direction, принимающий значения wdCollapseStart или wdCollapseEnd . По умолчанию область стягивается в начальную точку (значение параметра: wdCollapseStart ). Если сжимается абзац, и он стягивается в конечную точку, точка вставки переносится за метку конца абзаца и устанавливается в начало следующего абзаца. Если такой эффект нежелателен, после сжатия применяется метод перемещения MoveEnd , передвигающий точку вставки назад на один символ:

Если есть методы сжатия области, то должны быть и методы расширения области. Основным из них является метод Expand (Unit). В зависимости от значения параметра Unit область можно расширить на слово, предложение, абзац, раздел, на строку или столбец таблицы, или на всю таблицу. Для объекта Selection область можно расширить на всю строку. Для расширения области на весь фрагмент можно использовать метод WholeStory , что впрочем эквивалентно вызову метода Expand (Unit := wdStory)

Метод Move является основным методом перемещения. Остальные методы — в той или иной степени его модификации. Метод Move ( Unit , Count ) сжимает область в точку, стягивая ее в начало или конец, и затем перемещает точку вставки. Параметр Unit определяет единицы перемещения, а Count — количество этих единиц и направление стягивания и перемещения (по умолчанию 1). Положительные значения этого параметра задают стягивание к концу и перемещение вперед, отрицательные — стягивание в начало и перемещение назад. Само стягивание означает перемещение на одну единицу. Метод возвращает количество единиц, на которое фактически произошло перемещение, или 0, если оно не осуществлено. Параметр Unit принимает значения wdCharacter (по умолчанию), wdWord, wdSentence, wdParagraph, wdSection, wdStory, wdCell, wdColumn, wdRow и wdTable.

Методы перемещения на сам текст не влияют — лишь изменяют область, заданную объектами Range и Selection . Поэтому эти методы применимы только к переменным типа Range , но не к фиксированным областям. Например, запись:

не имеет эффекта, поскольку область первого абзаца — вещь неизменяемая.

Метод Move стягивает область в точку, которая и перемещается, поэтому после его выполнения область исчезает, и остается только точка вставки. Методы MoveStart и MoveEnd перемещают начальную или конечную точку области, обычно расширяя тем самым область.

Конечно, для перемещения по тексту документу есть много различных возможностей, кроме группы методов Move . Стоит упомянуть группу методов Next, основным из которых является метод Next(Unit,Count). Основное отличие от метода Move с теми же параметрами состоит в том, что метод Next возвращает сам объект Range , в отличие от метода Move , возвращающего число символов, на которое произошло перемещение. Напомним также о тех возможностях перемещения, которыми обладают объекты Browser и Hyperlink , напомним о закладках, специально предназначенных для перехода к ним.

Метод Delete позволяет удалить текст. Вызванный без параметров, он удаляет вызывающий его объект Range или Selection . Если он применен в форме Delete(Unit,Count), удаляется часть текста в указанной области. Параметр Unit задает единицы, но при удалении возможны только два значения: wdWord и wdCharacter. Параметр Count задает количество удаляемых единиц. Если область стянута в точку, удаляются символы перед точкой вставки или после нее в зависимости от знака параметра Count . Вот несколько примеров:

Группа методов Insert объектов Range и Selection позволяет осуществлять вставки в документ. Для вставки текста используются методы InsertBefore(Text) и InsertAfter(Text). Параметр Text типа String задает текст, вставляемый до или после области, заданной объектами Range или Selection . После вставки текста область автоматически расширяется, включая в себя добавляемый текст. Вот пример вставки нового абзаца в начало документа:

Свойство Text позволяет заменять текст в выделенной области, поэтому нет нужды вызывать метод Insert(Text), — лучше использовать свойство. Методы InsertBefore и InsertAfter безопасны, так как текст добавляется, не изменяя содержимого области. При вставке внутрь области, например, при использовании метода InsertSymbol или InsertParagraph, заменяется содержимое области. Эта вроде бы безобидная программка сотрет все содержимое документа, заменив его пустым абзацем:

Говоря о методах вставки текста, нельзя не упомянуть о таком мощном методе, как InsertFile — он позволяет вставлять не только текст или таблицу Excel, но и целый документ, хранящийся в файле. Вот простой пример вызова метода, при котором в начало активного документа вставляется существующий документ:

Работа с буфером

Известно, как полезен буфер при работе с одним и, особенно, с несколькими документами. Объекты Range и Selection в полной мере позволяют задействовать все возможности буфера. Метод Copy, не имеющий параметров, копирует объект (содержимое области) в буфер. Метод Cut, действуя аналогично, копирует объект в буфер, заодно удаляя его. Заметьте, что в отличие от предыдущей версии, теперь метод Cut работает, как ему положено, не только копируя объект, но и удаляя его, ранее удаления не происходило, вместо этого объект, вызывавший метод стягивался в точку. Метод Paste позволяет приклеить объект, помещенный в буфер. Рассмотрим пример:

Метод Paste позволяет «вклеить» содержимое буфера в область, заданную объектами Range и Selection . Эта операция опасна, так как происходит замена, а не добавление текста. Поэтому обычно метод Paste применяется к объектам Range и Selection , стянутым в точку вставки. В выполнении этого метода есть нюансы. У объекта Range содержимое буфера включается в его область, Объект Selection остается точкой вставки, расположенной после текста, добавленного из буфера.

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

Иногда в буфер копируют формат текста. Этим занимается метод CopyFormat , копирующий формат по первому символу объекта Selection . Если этот символ — метка абзаца, копируется формат абзаца. Методом CopyFormat обладает только объект Selection .

Метод PasteFormat применяет форматирование, хранящееся в буфере к объекту Selection .

Метод PasteSpecial позволяет явно управлять форматированием в момент вставки объекта из буфера.

Word vba selection

Эта книга поможет освоить интегрированную среду разработки VBA и научиться программировать в VBA с использование объектов, их свойств, методов и событий. Обсуждаемые приемы программирования иллюстрируются примерами, которые можно сразу же опробовать на практике. Полученные знания вы сможете применить как для настройки и усовершенствования популярный офисных приложений, включая приложения Office XP, так и для создания собственных приложений.

Книга рассчитана на тех, кто собирается быстро и без лишних усилий научиться программировать для Windows, используя VBA.

Книга: VBA для чайников

Работа с текстом в Word VBA

Работа с текстом в Word VBA

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

У объектов Range и Selection достаточно много общего, но есть и несколько ключевых отличий. Оба объекта представляют непрерывные последовательности символов, над которыми вы сможете выполнять различные операции. Оба объекта имеют много общих свойств и методов. Однако некоторые свойства и методы уникальны для выделенных областей, а другие — для диапазонов. Значительные различия состоят и в том, что объект Selection соответствует выделению в области окна: тексту, графическому изображению или любому другому объекту, в то время как объекты Range существуют независимо от выделенной области и всегда содержат текст.

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

Несмотря на их различия, объекты Selection и Range можно создавать один из другого. Эта возможность оказывается чрезвычайно важной, так как многие функции редактирования работают только с диапазонами. В противоположность этому, единственный способ отобразить содержимое диапазона пользователю- выделить его. Используйте следующие простые приемы.

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

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

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

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

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

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

Вы можете использовать любую из следующих констант для расширения объекта; 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 для наполнения объекта текстом.

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

Содержание

  1. Методы класса Word.Selection – выделение текста в Word
  2. Примера на языке VBScript – выделение текста в редакторе Word
  3. Примера на языке JScript – выделение текста в редакторе 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
' ----------------------------------------------------------------------------
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.

выделение текста в редакторе 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
' ----------------------------------------------------------------------------
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, его копирование и вставка.

// ----------------------------------------------------------------------------
// Класс 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();
}

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

' 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.

Like this post? Please share to your friends:
  • Word vba select paragraphs
  • Word vba save as document
  • Word vba range весь текст
  • Word vba range start
  • Word vba range font