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
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";
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
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);
Reemplace esos caracteres por la cadena Nuevo texto.
rng.Text = " New Text "
rng.Text = "New Text";
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
Declare una variable de objeto Selection.
Dim currentSelection As Word.Selection = Application.Selection
Word.Selection currentSelection = Application.Selection;
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; }
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(); }
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(); }
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