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


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

Обновлен: Ноябрь 2007

Применение

Сведения в данном разделе относятся только к указанным проектам Visual Studio Tools for Office и версиям приложений Microsoft Office.

Тип проекта

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

  • Проекты уровня приложения

Версия Microsoft Office

  • Word 2003

  • Word 2007

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

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

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

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

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

    6b9478cs.alert_note(ru-ru,VS.90).gifПримечание.

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

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

Для вставки текста в документ используйте свойство 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 "
    
    object start = 0;
    object end = 0;
    
    Word.Range rng = this.Application.ActiveDocument.Range(
        ref start, ref end);
    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)
    
    object start = 0;
    object end = 12;
    
    Word.Range rng = this.Application.ActiveDocument.Range(
        ref start, ref end);
    
  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;
}

См. также

Задачи

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

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

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