Compartilhar via


Inserir texto programaticamente em documentos do Word

Há três maneiras principais de inserir texto em documentos do Microsoft Office Word:

  • Inserir texto em um intervalo.

  • Substitua o texto em um intervalo por um novo texto.

  • Use o TypeText método de um Selection objeto para inserir texto no cursor ou na seleção.

Observação

Você também pode inserir texto em controles de conteúdo e marcadores. Para obter mais informações, consulte Controles de conteúdo e Controle de marcador.

Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de suplemento VSTO para Word. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

Observação

Interessado em desenvolver soluções que estendam a experiência do Office em várias plataformas? Confira o novo modelo de Suplementos do Office. Os Suplementos do Office têm um espaço pequeno em comparação com os suplementos e soluções VSTO, e você pode criá-los usando praticamente qualquer tecnologia de programação da Web, como HTML5, JavaScript, CSS3 e XML.

Inserir texto em um intervalo

Use a Text propriedade de um objeto para inserir texto em um Range documento.

Para inserir texto em um intervalo

  1. Especifique um intervalo no início de um documento e insira o texto Novo Texto.

    O exemplo de código a seguir pode ser usado em uma personalização em nível de documento.

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

    O exemplo de código a seguir pode ser usado em um suplemento VSTO. Esse código usa o documento ativo.

    Word.Range rng = this.Application.ActiveDocument.Range(0, 0);
    rng.Text = "New Text";
    
  2. Selecione o objeto, que foi expandido de um caractere para o Range comprimento do texto inserido.

    rng.Select();
    

Substituir texto em um intervalo

Se o intervalo especificado contiver texto, todo o texto no intervalo será substituído pelo texto inserido.

Para substituir texto em um intervalo

  1. Crie um Range objeto que consiste nos primeiros 12 caracteres do documento.

    O exemplo de código a seguir pode ser usado em uma personalização em nível de documento.

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

    O exemplo de código a seguir pode ser usado em um suplemento VSTO. Esse código usa o documento ativo.

    Word.Range rng = this.Application.ActiveDocument.Range(0, 12);
    
  2. Substitua esses caracteres pela cadeia de caracteres Novo Texto.

    rng.Text = "New Text";
    
  3. Selecione o intervalo.

    rng.Select();
    

Inserir texto usando TypeText

O TypeText método insere texto na seleção. TypeText comporta-se de forma diferente dependendo das opções definidas no computador do usuário. O código no procedimento a seguir declara uma variável de Selection objeto e desativa a opção Overtype se ela estiver ativada. Se a opção Overtype estiver ativada, qualquer texto ao lado do cursor será substituído.

Para inserir texto usando o método TypeText

  1. Declare uma variável do objeto Selection.

    Word.Selection currentSelection = Application.Selection;
    
  2. Desative a opção Overtype se ela estiver ativada.

    if (Application.Options.Overtype) 
    { 
        Application.Options.Overtype = false; 
    }
    
  3. Teste para ver se a seleção atual é um ponto de inserção.

    Se estiver, o código insere uma frase usando o e, em seguida, uma marca de parágrafo usando TypeTexto TypeParagraph método.

    // Test to see if selection is an insertion point.
    if (currentSelection.Type == Word.WdSelectionType.wdSelectionIP) 
    { 
        currentSelection.TypeText("Inserting at insertion point. ");
        currentSelection.TypeParagraph(); 
    }
    
  4. O código no bloco ElseIf testa para ver se a seleção é uma seleção normal. Se estiver, outro bloco If testa para ver se a opção ReplaceSelection está ativada. Se for, o código usa o Collapse método da seleção para recolher a seleção para um ponto de inserção no início do bloco de texto selecionado. Insira o texto e uma marca de parágrafo.

    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. Se a seleção não for um ponto de inserção ou um bloco de texto selecionado, o código no bloco Else não fará nada.

    else
    {
        // Do nothing.
    }
    

    Você também pode usar o TypeBackspace Selection método do objeto, que imita a funcionalidade da tecla Backspace no teclado. No entanto, quando se trata de inserir e manipular texto, o Range objeto oferece mais controle.

    O exemplo a seguir mostra todo o código. Para usar este exemplo, execute o ThisDocument código da classe ou ThisAddIn em seu projeto.

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