- •12. Объектная модель Word
- •12.1. Работа с документами
- •12.1.1. Создание нового документа
- •12.1.2. Открытие существующего документа
- •12.1.3. Закрытие документа
- •12.1.4. Сохранение документа
- •12.2. Работа с текстом в документах
- •12.2.1. Определение и выделение диапазонов в документах
- •12.2.2. Получение значений начала и завершения диапазона
- •12.2.3. Вставка текста в документы
- •12.2.4. Форматирование текста в документах
- •12.2.5. Поиск и замена текста в документах
- •12.2.6. Счетчик знаков в документе
- •12.3. Работа с таблицами
- •12.3.1. Создание таблиц в Word
- •12.3.2. Заполнение таблиц в свойствах документа
- •12.3.3. Добавление строк и столбцов в таблицы
- •12.3.4. Добавление текста в ячейку таблицы и его форматирование
12.2.4. Форматирование текста в документах
Private Sub RangeFormat()
'Установка диапазона на первый абзац
Dim rng As Word.Range = Me.Paragraphs(1).Range
'или
'Dim document As Word.Document = Me.Application.ActiveDocument
'Dim rng As Word.Range = document.Paragraphs(1).Range
'Форматирование диапазона
rng.Font.Name = "Arial" 'Шрифт
rng.Font.Size = 14 'Размер шрифта
rng.ParagraphFormat.Alignment = _
Word.WdParagraphAlignment.wdAlignParagraphCenter
rng.Select()
MessageBox.Show("Форматированный диапазон")
'Отмена трех предыдущих действий
Me.Undo(Times:=3) 'или document.Undo(Times:=3)
rng.Select()
MessageBox.Show("Отмена трех действий")
'Применение стиля Normal Indent
rng.Style = "Normal Indent"
rng.Select()
MessageBox.Show("Стиль Normal Indent применен")
'Отмена одного действия
Me.Undo() 'или document.Undo()
rng.Select()
MessageBox.Show("Отмена одного действия ")
End Sub
12.2.5. Поиск и замена текста в документах
1. Использование объектаSelection для поиска текста в документах.
Private Sub SelectionFind()
'Присваивание переменной строки поиска
Dim findText As String = "найдите меня"
'Снятие форматирования, установленного при выполнении
'предыдущего поиска
Application.Selection.Find.ClearFormatting()
'Поиск и отображение его результатов в окне сообщения
If Application.Selection.Find.Execute(findText) = True Then
MessageBox.Show("Текст найден.")
Else
MessageBox.Show("Текст не найден.")
End If
End Sub
2. Использование объекта Range для поиска текста в документах.
Private Sub RangeFind()
Dim findText As String = "найдите меня"
'или Dim findText As Object = "найдите меня"
'Определение объекта Range,
'состоящего из второго абзаца документа
Dim rng As Word.Range = Me.Paragraphs(2).Range
'или Dim rng As Word.Range = _
' Me.Application.ActiveDocument.Paragraphs(2).Range
'Очистка всех параметров форматирования
'(с помощью свойства FindобъектаRange)
rng.Find.ClearFormatting()
'Поиск строки "найдите меня" и отображение результатов
'в окне сообщения
If rng.Find.Execute(findText) Then
MessageBox.Show("Текст найден.")
Else
MessageBox.Show("Текст не найден.")
End If
'Выделение абзаца Range, чтобы сделать его видимым
rng.Select()
EndSub
3. Поиск и замена текста в документах.
Private Sub SearchReplace()
Dim FindObject As Word.Find = Application.Selection.Find
With FindObject
.ClearFormatting()
.Text = "найдите меня"
.Replacement.ClearFormatting()
.Replacement.Text = "Найден"
.Execute(Replace:=Word.WdReplace.wdReplaceAll)
End With
End Sub
4. Установка параметров поиска в документах.
– Установка параметров поиска с помощью объекта Find.
With Application.Selection.Find
.ClearFormatting()
.Forward = True
.Wrap = Word.WdFindWrap.wdFindContinue
.Text = "найдите меня"
.Execute()
End With
– Установка параметров поиска с помощью аргументов метода Execute.
With Application.Selection.Find
.ClearFormatting()
.Execute(FindText:="найдите меня", Forward:=True, _
Wrap:=Word.WdFindWrap.wdFindContinue)
End With
5. Просмотр найденных элементов в документе.
Private Sub FindLoop()
Dim intFound As Integer = 0
'Объявление объекта Range
Dim rng As Word.Range = Me.Content
'или Dim rng As Word.Range = _
' Me.Application.ActiveDocument.Content
'Использование свойства Found в цикле
'для поиска всех вхождений строки
rng.Find.ClearFormatting()
rng.Find.Forward = True
rng.Find.Text = "найдите меня"
rng.Find.Execute()
Do While rng.Find.Found = True
'Автоувеличение при каждом нахождении искомой строки
intFound += 1
rng.Find.Execute()
Loop
'Отображение количества появлений искомой строки
'в окне сообщения
MessageBox.Show("Strings found: " & intFound.ToString())
End Sub