Поделиться через


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

Предусмотрено три основных способа вставки текста в документы Microsoft Office Word:

  • Вставка текста в диапазон.

  • Замена текста в диапазоне новым.

  • Вставка текста в текущем положении курсора или объекте выделения с помощью метода TypeText объекта Selection.

ПримечаниеПримечание

Также можно вставить текст в элементы управления содержимым и закладки.Дополнительные сведения см. в разделах Элементы управления содержимым и Элементы управления Bookmark.

Применение. Сведения этого раздела применяются к проектам уровня документа и уровня приложения для Word 2013 и Word 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.

Вставка текста в диапазон

Для вставки текста в документ используйте свойство Text объекта Range.

Вставка текста в диапазон

  1. Укажите диапазон в начале документа и вставьте текст Новый текст.

    Следующий пример кода можно использовать в настройке на уровне документа.

    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";
    
  2. Выберите объект Range, имеющий длину от одного знака до длины вставляемого текста.

    rng.Select()
    
    rng.Select();
    

Замена текста в диапазоне

Весь текст, содержащийся в заданном диапазоне, заменяется вставляемым текстом.

Замена текста в диапазоне

  1. Создайте объект 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);
    
  2. Замените эти знаки строкой Новый текст.

    rng.Text = " New Text "
    
    rng.Text = "New Text"; 
    
  3. Выделите диапазон.

    rng.Select()
    
    rng.Select();
    

Вставка текста с помощью метода TypeText

Метод TypeText вставляет текст в область выделения.Метод TypeText действует по-разному в зависимости от параметров, заданных в компьютере пользователя.В коде следующей процедуры объявляется объектная переменная Selection и отключается параметр Overtype (если он включен).Если параметр Overtype включен, следующий за позицией курсора знак перезаписывается.

Вставка текста с помощью метода TypeText

  1. Объявите объектную переменную Selection.

    Dim currentSelection As Word.Selection = Application.Selection
    
    Word.Selection currentSelection = Application.Selection; 
    
  2. Отключите параметр Overtype (если он включен).

    If Application.Options.Overtype Then
        Application.Options.Overtype = False
    End If
    
    if (Application.Options.Overtype) 
    { 
        Application.Options.Overtype = false; 
    } 
    
  3. Проверьте, принадлежит ли точка вставки текущему объекту выделения.

    Если это так, выполняется вставка предложения с помощью метода 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(); 
    } 
    
  4. В коде блока 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();
        }
    
  5. Если объект выделения не содержит точку вставки или фрагмент выделенного текста, в коде блока 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;
}

См. также

Задачи

Практическое руководство. Программное форматирование текста в документах

Практическое руководство. Программное определение и выделение диапазонов в документах

Практическое руководство. Программное расширение диапазонов в документах