Trabajar con objetos Range
Importante
En este artículo es máquina traducido, vea la exención de responsabilidad. Encontrará la versión en inglés de este artículo aquí para su referencia.
Es una tarea común cuando se utiliza Microsoft Visual Basic especificar un área en un documento y, a continuación, hacer algo con ella, como insertar texto o aplicar formato. Por ejemplo, desea escribir una macro que busca una palabra o frase dentro de una parte de un documento. La parte del documento puede estar representada por un Range objeto. Una vez identificado el objeto Range , pueden aplicar los métodos y propiedades del objeto Range para modificar el contenido del rango.
Un objeto Range hace referencia a una zona contigua del documento. Cada objeto Range se define mediante una posición de carácter inicial y final. De forma similar al uso de los marcadores en un documento, los objetos Range se utilizan en los procedimientos de Visual Basic para identificar partes específicas del documento. Un objeto Range puede ser tan pequeño como el punto de inserción o tan grande como todo el documento. Sin embargo, a diferencia de los marcadores, un objeto Range sólo existe mientras se ejecuta el procedimiento que lo define.
El Start, End, y StoryType Propiedades de identifican de forma exclusiva un objeto Range . Las propiedades Start y End devuelven o establecen las posiciones de carácter inicial y final del objeto Range . La posición de carácter al principio del documento es cero, la posición después de que el primer carácter es uno y así sucesivamente. Existen 11 tipos de artículos diferentes representados por las constantes WdStoryType de la propiedad StoryType .
Nota
Los objetos Range son independientes de la selección. Es decir, puede definir y modificar un intervalo sin cambiar la selección actual. Por otro lado, en un documento pueden definirse varios intervalos, pero sólo puede haber una selección por panel de documento.
Uso del método Range
Utilice la Range método del objeto Document para crear un objeto Range que se encuentra en el artículo principal y tiene una inicial y final determinados. En el ejemplo siguiente se crea un objeto Range que empieza al principio del primer carácter y llega hasta el décimo carácter.
Sub SetNewRange()
Dim rngDoc As Range
Set rngDoc = ActiveDocument.Range(Start:=0, End:=10)
End Sub
Puede ver si se ha creado el objeto Range al aplicar una propiedad o un método a dicho objeto Range. En el siguiente ejemplo, se aplica formato de negrita a los 10 primeros caracteres del documento activo.
Sub SetBoldRange()
Dim rngDoc As Range
Set rngDoc = ActiveDocument.Range(Start:=0, End:=10)
rngDoc.Bold = True
End Sub
Cuando se necesita hacer referencia a un objeto Range varias veces, puede utilizar la instrucción Set para establecer a una variable igual al objeto Range . Sin embargo, si sólo necesita realizar una acción en un objeto Range , no es necesario almacenar el objeto en una variable. Puede obtener el mismo resultado utilizando sólo una instrucción que identifique el intervalo y cambie la Bold propiedad.
Sub BoldRange()
ActiveDocument.Range(Start:=0, End:=10).Bold = True
End Sub
Al igual que los marcadores, un intervalo puede ocupar un grupo de caracteres o marcar una posición en un documento. El objeto Range del siguiente ejemplo tiene un mismo punto inicial y final. En el intervalo no se incluye texto. En el siguiente ejemplo, se inserta texto al principio del documento activo.
Sub InsertTextBeforeRange()
Dim rngDoc As Range
Set rngDoc = ActiveDocument.Range(Start:=0, End:=0)
rngDoc.InsertBefore "Hello "
End Sub
Los extremos inicial y final de un intervalo se pueden definir mediante los números de posición de carácter anteriormente mencionados o las propiedades Start y End con objetos como Selection, Bookmark o Range. En el siguiente ejemplo, se crea un objeto Range que comienza al principio del segundo párrafo y acaba después del tercer párrafo.
Sub NewRange()
Dim doc As Document
Dim rngDoc As Range
Set doc = ActiveDocument
Set rngDoc = doc.Range(Start:=doc.Paragraphs(2).Range.Start, _
End:=doc.Paragraphs(3).Range.End)
End Sub
Para obtener información adicional y ejemplos, consulte el Range método.
Uso de la propiedad Range
La propiedad Range aparece en múltiples objetos, como Paragraph, Bookmark y Cell, y se utiliza para devolver un objeto Range. En el siguiente ejemplo, se devuelve un objeto Range que hace referencia al primer párrafo del documento activo.
Sub SetParagraphRange()
Dim rngParagraph As Range
Set rngParagraph = ActiveDocument.Paragraphs(1).Range
End Sub
Una vez creado un objeto Range, puede utilizar cualquiera de las propiedades o los métodos del objeto Range para modificarlo. En el siguiente ejemplo, se selecciona el segundo párrafo del documento activo y, a continuación, se centra la selección.
Sub FormatRange()
ActiveDocument.Paragraphs(2).Range.Select
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
End Sub
Si necesita aplicar muchas propiedades o muchos métodos a un mismo objeto Range, puede utilizar la estructura With...End With. En el siguiente ejemplo, se da formato al texto del primer párrafo del documento activo.
Sub FormatFirstParagraph()
Dim rngParagraph As Range
Set rngParagraph = ActiveDocument.Paragraphs(1).Range
With rngParagraph
.Bold = True
.ParagraphFormat.Alignment = wdAlignParagraphCenter
With .Font
.Name = "Stencil"
.Size = 15
End With
End With
End Sub
Para obtener información adicional y ejemplos, consulte el Range tema de la propiedad.
Volver a definir un objeto Range
Utilice la SetRange método para definir un objeto Range . En el ejemplo siguiente se define un rango como la selección actual. El método SetRange redefine el intervalo para que hace referencia a la selección actual y a los 10 caracteres siguientes.
Sub ExpandRange()
Dim rngParagraph As Range
Set rngParagraph = Selection.Range
rngParagraph.SetRange Start:=rngParagraph.Start, _
End:=rngParagraph.End + 10
End Sub
Para obtener información adicional y ejemplos, consulte el Range método para el Document.
Nota
Al depurar las macros, puede utilizar la Seleccione método para asegurarse de que haya un objeto Range que hace referencia al intervalo de texto correcto. Por ejemplo, la siguiente, selecciona un objeto Range que hace referencia a los párrafos segundo y terceros del documento activo y, a continuación, da formato a la fuente de la selección.
Sub SelectRange()
Dim rngParagraph As Range
Set rngParagraph = ActiveDocument.Paragraphs(2).Range
rngParagraph.SetRange Start:=rngParagraph.Start, _
End:=ActiveDocument.Paragraphs(3).Range.End
rngParagraph.Select
Selection.Font.Italic = True
End Sub
Nota
Declinación de responsabilidades de traducción automática: Este artículo se ha traducido con un sistema informático sin intervención humana. Microsoft ofrece estas traducciones automáticas para que los hablantes de otros idiomas distintos del inglés puedan disfrutar del contenido sobre los productos, los servicios y las tecnologías de Microsoft. Puesto que este artículo se ha traducido con traducción automática, es posible que contenga errores de vocabulario, sintaxis o gramática.