Практическое руководство. Программная вставка текста в документы Word
Предусмотрено три основных способа вставки текста в документы Microsoft Office Word:
Вставка текста в диапазон.
Замена текста в диапазоне новым.
Вставка текста в текущем положении курсора или объекте выделения с помощью метода TypeText объекта Selection.
![]() |
---|
Также можно вставить текст в элементы управления содержимым и закладки.Дополнительные сведения см. в разделах Элементы управления содержимым и Элементы управления Bookmark. |
Применение. Сведения этого раздела применяются к проектам уровня документа и уровня приложения для Word 2013 и Word 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.
Вставка текста в диапазон
Для вставки текста в документ используйте свойство Text объекта Range.
Вставка текста в диапазон
Укажите диапазон в начале документа и вставьте текст Новый текст.
Следующий пример кода можно использовать в настройке на уровне документа.
Dim rng As Word.Range = Me.Range(Start:=0, End:=0) rng.Text = " New Text "
object start = 0; object end = 0; Word.Range rng = this.Range(ref start, ref end); rng.Text = "New Text";
Приведенный ниже пример кода можно использовать в надстройке уровня приложения.В этом коде используется активный документ.
Dim rng As Word.Range = Me.Application.ActiveDocument.Range(Start:=0, End:=0) rng.Text = " New Text "
Word.Range rng = this.Application.ActiveDocument.Range(0, 0); rng.Text = "New Text";
Выберите объект Range, имеющий длину от одного знака до длины вставляемого текста.
rng.Select()
rng.Select();
Замена текста в диапазоне
Весь текст, содержащийся в заданном диапазоне, заменяется вставляемым текстом.
Замена текста в диапазоне
Создайте объект Range, содержащий первые 12 знаков документа.
Следующий пример кода можно использовать в настройке на уровне документа.
Dim rng As Word.Range = Me.Range(Start:=0, End:=12)
object start = 0; object end = 12; Word.Range rng = this.Range(ref start, ref end);
Приведенный ниже пример кода можно использовать в надстройке уровня приложения.В этом коде используется активный документ.
Dim rng As Word.Range = Me.Application.ActiveDocument.Range(Start:=0, End:=12)
Word.Range rng = this.Application.ActiveDocument.Range(0, 12);
Замените эти знаки строкой Новый текст.
rng.Text = " New Text "
rng.Text = "New Text";
Выделите диапазон.
rng.Select()
rng.Select();
Вставка текста с помощью метода TypeText
Метод TypeText вставляет текст в область выделения.Метод TypeText действует по-разному в зависимости от параметров, заданных в компьютере пользователя.В коде следующей процедуры объявляется объектная переменная Selection и отключается параметр Overtype (если он включен).Если параметр Overtype включен, следующий за позицией курсора знак перезаписывается.
Вставка текста с помощью метода TypeText
Объявите объектную переменную Selection.
Dim currentSelection As Word.Selection = Application.Selection
Word.Selection currentSelection = Application.Selection;
Отключите параметр Overtype (если он включен).
If Application.Options.Overtype Then Application.Options.Overtype = False End If
if (Application.Options.Overtype) { Application.Options.Overtype = false; }
Проверьте, принадлежит ли точка вставки текущему объекту выделения.
Если это так, выполняется вставка предложения с помощью метода TypeText и затем вставка знака абзаца с помощью метода TypeParagraph.
With currentSelection ' Test to see if selection is an insertion point. If .Type = Word.WdSelectionType.wdSelectionIP Then .TypeText("Inserting at insertion point. ") .TypeParagraph()
// Test to see if selection is an insertion point. if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP) { currentSelection.TypeText("Inserting at insertion point. "); currentSelection.TypeParagraph(); }
В коде блока ElseIf проверяется, является ли текущий объект выделения обычным.Если это так, в следующем блоке If проверяется, включен ли параметр ReplaceSelection.Если это так, с помощью метода Collapse объекта выделения выполняется свертывание выделения к точке вставки, расположенной в начале фрагмента текста.Вставьте текст и знак абзаца.
ElseIf .Type = Word.WdSelectionType.wdSelectionNormal Then ' Move to start of selection. If Application.Options.ReplaceSelection Then .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseStart) End If .TypeText("Inserting before a text block. ") .TypeParagraph()
else if (currentSelection.Type == Word.WdSelectionType.wdSelectionNormal) { // Move to start of selection. if (Application.Options.ReplaceSelection) { object direction = Word.WdCollapseDirection.wdCollapseStart; currentSelection.Collapse(ref direction); } currentSelection.TypeText("Inserting before a text block. "); currentSelection.TypeParagraph(); }
Если объект выделения не содержит точку вставки или фрагмент выделенного текста, в коде блока Else не выполняется никаких действий.
Else ' Do nothing. End If
else { // Do nothing. }
Также можно использовать метод TypeBackspace объекта Selection, который имитирует нажатие клавиши BACKSPACE.Однако при вставке текста и работе с ним объект Range предоставляет более широкие возможности управления.
Ниже приведен полный пример кода.Чтобы использовать этот пример, выполните код из класса ThisDocument или ThisAddIn в проекте.
Friend Sub SelectionInsertText()
Dim currentSelection As Word.Selection = Application.Selection
' Store the user's current Overtype selection
Dim userOvertype As Boolean = Application.Options.Overtype
' Make sure Overtype is turned off.
If Application.Options.Overtype Then
Application.Options.Overtype = False
End If
With currentSelection
' Test to see if selection is an insertion point.
If .Type = Word.WdSelectionType.wdSelectionIP Then
.TypeText("Inserting at insertion point. ")
.TypeParagraph()
ElseIf .Type = Word.WdSelectionType.wdSelectionNormal Then
' Move to start of selection.
If Application.Options.ReplaceSelection Then
.Collapse(Direction:=Word.WdCollapseDirection.wdCollapseStart)
End If
.TypeText("Inserting before a text block. ")
.TypeParagraph()
Else
' Do nothing.
End If
End With
' Restore the user's Overtype selection
Application.Options.Overtype = userOvertype
End Sub
private void SelectionInsertText()
{
Word.Selection currentSelection = Application.Selection;
// Store the user's current Overtype selection
bool userOvertype = Application.Options.Overtype;
// Make sure Overtype is turned off.
if (Application.Options.Overtype)
{
Application.Options.Overtype = false;
}
// Test to see if selection is an insertion point.
if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP)
{
currentSelection.TypeText("Inserting at insertion point. ");
currentSelection.TypeParagraph();
}
else
if (currentSelection.Type == Word.WdSelectionType.wdSelectionNormal)
{
// Move to start of selection.
if (Application.Options.ReplaceSelection)
{
object direction = Word.WdCollapseDirection.wdCollapseStart;
currentSelection.Collapse(ref direction);
}
currentSelection.TypeText("Inserting before a text block. ");
currentSelection.TypeParagraph();
}
else
{
// Do nothing.
}
// Restore the user's Overtype selection
Application.Options.Overtype = userOvertype;
}
См. также
Задачи
Практическое руководство. Программное форматирование текста в документах
Практическое руководство. Программное определение и выделение диапазонов в документах
Практическое руководство. Программное расширение диапазонов в документах