Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Редактирование документов Word

    Редактирование документов Word из кода VBA Excel. Добавление и форматирование текста. Объект Word.Range, свойство Text, методы InsertAfter и InsertBefore.

    Работа с Word из кода VBA Excel
    Часть 3. Редактирование документов Word
    [Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]

    Добавление текста в новый документ

    Основные объекты, использующиеся в VBA Word для определения места вставки, добавления и форматирования текста – это Selection (выделение), Range (диапазон) и Bookmark (закладка).

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

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

    Word.Range кардинально отличается от объекта Range в Excel. В приложении Word он представляет из себя набор из одного или множества символов. А также он может вообще не содержать ни одного символа, а быть указателем ввода текста (виртуальным курсором).

    Объект Range возвращается свойством Range других объектов приложения Word: Document, Selection, Bookmark, Paragraph, Cell (объект Table).

    Вставка текста без форматирования

    Если текст вставляется без форматирования, достаточно одной строки кода (myDocument – это переменная):

    • Вставка текста с заменой имеющегося: myDocument.Range.Text = "Вставляемый текст"
    • Добавление текста после имеющегося: myDocument.Range.InsertAfter "Добавляемый текст"
    • Добавление текста перед имеющимся: myDocument.Range.InsertBefore "Добавляемый текст"

    Методами InsertAfter и InsertBefore можно вставить текст и на пустую страницу, также, как с помощью свойства Text. Перейти на новый абзац и начать предложение с красной строки можно с помощью ключевых слов vbCr (vbNewLine, vbCrLf) и vbTab.

    Вставка текста с форматированием

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

    Синтаксис присвоения диапазона символов объекту Range:

    • myDocument – переменная;
    • n – номер точки перед начальным символом;
    • m – номер точки после конечного символа.

    Счет точек вставки начинается с нуля. Знаки переноса строки, возврата каретки и табуляции учитываются как отдельные символы. 0 – это для объекта Word.Range виртуальная точка вставки на пустом документе, 1 – точка между первым и вторым символом, 2 – точка между вторым и третьим символом и т.д.

    На пустом документе объекту Range можно присвоить только виртуальную точку вставки:
    myDocument.Range(Start:=0, End:=0)

    Первый символ в документе с текстом:
    myDocument.Range(Start:=0, End:=1)

    Диапазон с 11 по 20 символ:
    myDocument.Range(Start:=10, End:=20)

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

    Вставка курсора в начало документа:
    myDocument.Range(Start:=0, End:=0).Select

    Эта строка вставит курсор между пятым и шестым символами:
    myDocument.Range(Start:=5, End:=5).Select

    Вставка курсора в конец документа:
    myDocument.Range(.Range.Characters.Count - 1, .Range.Characters.Count - 1).Select

    Ссылку на объект Range можно присвоить переменной, но при форматировании ее придется каждый раз переопределять и код получится длиннее. Пример присвоения ссылки объектной переменной:

    Для Range(Start:=0, End:=20) в документе должно быть как минимум 20 символов.

    Однострочные примеры редактирования и форматирования текста

    Вставка дополнительного текста внутри имеющегося после заданной точки:
    myDocument.Range(Start:=10, End:=10).InsertAfter "Вставляемый текст"

    Новый абзац с красной строки (предыдущая строка должна заканчиваться символом возврата каретки или переноса строки):
    myDocument.Range.InsertAfter vbTab & "Красная строка"

    Присвоение шрифту заданного диапазона зеленого цвета:
    myDocument.Range(Start:=10, End:=65).Font.ColorIndex = wdGreen

    Меняем обычное начертание на курсив:
    myDocument.Range(Start:=10, End:=65).Font.Italic = True

    Указываем размер шрифта:
    myDocument.Range(Start:=10, End:=65).Font.Size = 22

    Применение стандартных стилей:
    myDocument.Range(Start:=0, End:=16).Style = "Заголовок 1"

    Если вас заинтересуют другие команды форматирования текста, запишите их макрорекордером в VBA Word и примените к объекту Range.

    Примеры редактирования документов Word

    Пример 1
    Добавление текста в новый документ без форматирования:

    Пример 2
    Добавление текста в новый документ с форматированием:

    Вы можете запустить эти примеры в редакторе VBA Excel на своем компьютере и посмотреть результаты.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.