Insertar texto mediante programación en documentos de Word
Existen tres maneras principales de insertar texto en documentos de Microsoft Office Word:
Insertar texto en un intervalo.
Reemplazar texto en un intervalo con texto nuevo.
Usar el método TypeText de un objeto Selection para insertar texto en el cursor o la selección.
Nota:
También puede insertar texto en controles de contenido y marcadores. Para obtener más información, vea Controles de contenido y Control bookmark.
Se aplica a: la información de este tema se aplica a proyectos de nivel de documento y proyectos de complementos de VSTO para Word. Para obtener más información, consulte Características disponibles por aplicación de Office lication y tipo de proyecto.
Nota:
¿Le interesa desarrollar soluciones que amplíen la experiencia de Office en varias plataformas? Consulte el nuevo modelo de complementos de Office. Los complementos de Office tienen una superficie pequeña en comparación con los complementos y soluciones de VSTO, y puede compilarlos mediante casi cualquier tecnología de programación web, como HTML5, JavaScript, CSS3 y XML.
Insertar texto en un intervalo
Use la propiedad Text de un objeto Range para insertar texto en un documento.
Para insertar texto en un intervalo
Especifique un intervalo al principio de un documento e inserte el texto New Text.
El siguiente ejemplo de código se puede usar en una personalización de nivel de documento.
object start = 0; object end = 0; Word.Range rng = this.Range(ref start, ref end); rng.Text = "New Text";
El siguiente ejemplo de código se puede usar en un complemento de VSTO. Este código usa el documento activo.
Seleccione el objeto Range , que se ha ampliado de un carácter a la longitud del texto insertado.
Reemplazar texto en un intervalo
Si el intervalo especificado contiene texto, se reemplaza todo el texto en el intervalo por el texto insertado.
Para reemplazar texto en un intervalo
Cree un objeto Range que consista de los 12 primeros caracteres del documento.
El siguiente ejemplo de código se puede usar en una personalización de nivel de documento.
El siguiente ejemplo de código se puede usar en un complemento de VSTO. Este código usa el documento activo.
Reemplace esos caracteres por la cadena New Text.
Seleccione el intervalo.
Insertar texto mediante TypeText
El método TypeText inserta texto en la selección. TypeText se comporta de forma distinta según las opciones establecidas en el equipo del usuario. El código en el siguiente procedimiento 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 mediante el método TypeText
Declare una variable de objeto Selection.
Desactive la opción Overtype si está activada.
Compruebe si la selección actual es un punto de inserción.
Si lo es, el código inserta una frase usando TypeTexty, a continuación, una marca de párrafo usando el método 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 es así, el código usa el método Collapse de la selección para contraer la selección hasta un punto de inserción al principio del bloque de texto seleccionado. Inserte el texto y una marca de párrafo.
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 o un bloque de texto seleccionado, el código del bloque Else no hace nada.
También puede usar el TypeBackspace método del Selection objeto , que imita la funcionalidad de la tecla Retroceso en el teclado. Sin embargo, cuando se trata de insertar y manipular texto, el objeto Range ofrece un mayor control.
El ejemplo siguiente muestra el código completo: Para usar este ejemplo, ejecute el código desde la clase
ThisDocument
oThisAddIn
del proyecto.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; }