Compartir a través de


Cómo: Insertar texto en documentos de Word mediante programación

Existen tres métodos principales para insertar texto en los documentos de Microsoft Office Word:

  • Insertar texto en un intervalo

  • Sustituir el texto de un intervalo por texto nuevo

  • Use el método TypeText de un objeto Selection para insertar texto en el cursor o en la selección.

[!NOTA]

También puede insertar texto en controles de contenido y en marcadores.Para obtener más información, vea Controles de contenido y Bookmark (Control).

Se aplica a: La información de este tema se aplica a los proyectos de nivel de documento y los proyectos de nivel de aplicación para Word 2013 y Word 2010. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.

Insertar texto en un intervalo

Utilice la propiedad Text de un objeto Range para insertar texto en un documento.

Para insertar texto en un rango

  1. Especifique un intervalo al principio de un documento e inserte el texto Nuevo texto.

    El ejemplo de código siguiente se puede usar en una personalización de nivel de documento.

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

    El ejemplo de código siguiente se puede usar en un complemento de nivel de aplicación.En este código se usa el documento activo.

    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. Seleccione el objeto Range, que se ha expandido de un carácter a la longitud del texto insertado.

    rng.Select()
    
    rng.Select();
    

Sustituir el texto de un rango

Si el rango especificado contiene texto, todo el texto del intervalo se reemplaza por el texto insertado.

Para sustituir el texto de un rango

  1. Cree un objeto Range compuesto por los primeros 12 caracteres en el documento.

    El ejemplo de código siguiente se puede usar en una personalización de nivel de documento.

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

    El ejemplo de código siguiente se puede usar en un complemento de nivel de aplicación.En este código se usa el documento activo.

    Dim rng As Word.Range = Me.Application.ActiveDocument.Range(Start:=0, End:=12)
    
    Word.Range rng = this.Application.ActiveDocument.Range(0, 12);
    
  2. Reemplace esos caracteres por la cadena Nuevo texto.

    rng.Text = " New Text "
    
    rng.Text = "New Text"; 
    
  3. Seleccione el rango.

    rng.Select()
    
    rng.Select();
    

Insertar texto utilizando TypeText

El método TypeText inserta el texto en la selección.TypeText se comporta de manera diferente en función de las opciones configuradas en el equipo del usuario.El código del procedimiento siguiente declara una variable de objeto Selection y desactiva la opción Overtype si está activada.Si la opción Overtype está activada, se sobrescribe cualquier texto situado junto al cursor.

Para insertar texto por medio del método TypeText

  1. Declare una variable de objeto Selection.

    Dim currentSelection As Word.Selection = Application.Selection
    
    Word.Selection currentSelection = Application.Selection; 
    
  2. Desactive la opción Overtype si está activada.

    If Application.Options.Overtype Then
        Application.Options.Overtype = False
    End If
    
    if (Application.Options.Overtype) 
    { 
        Application.Options.Overtype = false; 
    } 
    
  3. Compruebe si la selección actual es un punto de inserción.

    Si lo es, el código inserta una frase utilizando TypeText y, a continuación, una marca de párrafo utilizando el método 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. El código del bloque ElseIf comprueba si la selección es una selección normal.Si lo es, otro bloque If comprueba si la opción ReplaceSelection está activada.Si está activada, el código utiliza el método Collapse de la selección para contraer la selección a un punto de inserción en el inicio del bloque de texto seleccionado.Inserte el texto y una marca de párrafo.

    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. Si la selección no es un punto de inserción ni un bloque de texto seleccionado, el código del bloque Else no hace nada.

    Else
        ' Do nothing.
    End If
    
    else
    {
        // Do nothing.
    }
    

También puede usar el método TypeBackspace del objeto Selection, que imita la funcionalidad de la tecla RETROCESO del teclado.No obstante, cuando se trata de insertar y manipular texto, el objeto Range ofrece más control.

El ejemplo siguiente muestra el código completo:Para usar este ejemplo, ejecútelo desde las clases ThisDocument o ThisAddIn del proyecto.

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

Vea también

Tareas

Cómo: Dar formato al texto en documentos mediante programación

Cómo: Definir y seleccionar intervalos en documentos mediante programación

Cómo: Ampliar intervalos en documentos mediante programación