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


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

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

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

  • замена текста в диапазоне на новый текст;

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

Примечание.

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

Область применения. Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO для Word. Дополнительные сведения см. в разделе "Функции", доступные по Приложение Office ликации и типу проекта.

Примечание.

Заинтересованы в разработке решений, которые расширяют возможности Office на нескольких платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office имеют небольшое пространство по сравнению с надстройками и решениями VSTO, и вы можете создавать их практически с помощью любой технологии веб-программирования, таких как HTML5, JavaScript, CSS3 и XML.

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

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

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

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

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

    object start = 0; 
    object end = 0; 
    
    Word.Range rng = this.Range(ref start, ref end); 
    rng.Text = "New Text";
    

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

    Word.Range rng = this.Application.ActiveDocument.Range(0, 0);
    rng.Text = "New Text";
    
  2. Выберите объект Range , который был расширен от одного символа до длины вставленного текста.

    rng.Select();
    

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

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

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

  1. Создайте объект Range , состоящий из первых 12 символов в документе.

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

    object start = 0; 
    object end = 12; 
    
    Word.Range rng = this.Range(ref start, ref end);
    

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

    Word.Range rng = this.Application.ActiveDocument.Range(0, 12);
    
  2. Замените эти символы строкой New Text.

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

    rng.Select();
    

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

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

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

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

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

    if (Application.Options.Overtype) 
    { 
        Application.Options.Overtype = false; 
    }
    
  3. Проверьте, находится ли текущее выделение у точки вставки.

    Если это так, код вставляет предложение с помощью TypeText, а затем знак абзаца с помощью метода 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 выделения, чтобы свернуть его до точки вставки в начале выделенного блока текста. Вставьте текст и знак абзаца.

    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.
    }
    

    Можно также использовать TypeBackspace метод Selection объекта, который имитирует функциональные возможности клавиши Backspace на клавиатуре. Но когда дело доходит до вставки и изменения текста, объект Range предоставляет больше возможностей для управления.

    В следующем примере показан полный код. Чтобы использовать этот пример, запустите код из класса ThisDocument или ThisAddIn в своем проекте.

    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;
    }