Trabajar con bloques de creación

Los bloques de creación, novedad de Word 2007, son similares a las entradas de autotexto de versiones anteriores. Sin embargo, con los bloques de creación, puede organizar los elementos de forma que permitan determinar cómo los usa un usuario. Un bloque de creación personalizado ayuda a los usuarios a insertar contenido enriquecido en cualquier parte del documento mediante una lista desplegable con formato. Cuando se usa conjuntamente con controles de contenido, los bloques de creación permiten desarrollar soluciones eficaces de forma rápida y sencilla.

El modelo de objetos de bloques de creación incluye tres nuevos objetos y cuatro nuevas colecciones. Éstos le permiten crear una estructura organizativa para sus necesidades específicas y modificar la estructura para una solución específica. Los nuevos objetos y colecciones se muestran en la siguiente tabla.

Nombre Descripción
BuildingBlock Una entrada específica de bloque de creación.
BuildingBlocks Una colección de entradas de bloques de creación en una plantilla que son del mismo tipo y categoría.
BuildingBlockEntries Una colección de todos los bloques de creación de una plantilla-
BuildingBlockType Un tipo de bloque de creación.
BuildingBlockTypes Una colección de tipos de bloques de creación.
Category Una categoría de bloques de creación.
Categories Una colección de categorías de bloques de creación.

Descripción de los bloques de creación

Los bloques de creación se organizan por tipo y por categoría. Los tipos de bloques de creación se componen de un número limitado de constantes WdBuildingBlockTypes . Aunque hay un número limitado de dichas constantes, dicho número no es pequeño. Hay 35 constantes WdBuildingBlockTypes distintas. Estos tipos le ayudan a definir y organizar los bloques de creación y, aunque no puede crear tipos de bloques de creación adicionales, puede crear un número ilimitado de categorías para cada tipo.

Las categorías están formadas por un número ilimitado de cadenas que puede definir para organizar los bloques de creación personalizados. Los bloques de creación se almacenan en plantillas. De forma predeterminada, las plantillas que se incluyen con Word tienen categorías de bloques de creación como "General" e "Integrado". Sin embargo, no está limitado exclusivamente a las categorías incluidas en dichas plantillas. Una categoría puede ser cualquier cadena que defina. Los tipos y las categorías se explican más adelante en este tema.

Dado que puede organizar los bloques de creación en tipos y categorías, los bloques de creación resultan extremadamente flexibles. Por ejemplo, puede tener un bloque de creación llamado "Título" que corresponda a un tipowdTypeBibliography y a una categoría "Títulos de libros" y otro bloque de creación llamado "Título" que corresponda a un tipo wdTypeBibliography y a una categoría "Títulos de películas", además de otro bloque de creación llamado "Título" que corresponda a un tipo wdTypeCustomHeaders y a una categoría "Títulos de libros", etc. La increíble flexibilidad que ofrecen los bloques de creación le ayudan a crear soluciones personalizadas sin necesidad de escribir código.

No obstante, los bloques de creación también se pueden programar. Puede crear bloques de creación nuevos, eliminarlos y administrarlos mediante programación. También puede observar cuándo los usuarios insertan nuevos bloques de creación en un documento mediante el evento BuildingBlockInsert . Además, puede usar bloques de creación con controles de contenido para tener un control aún mayor sobre qué bloques de creación pueden insertar los usuarios en sus documentos. Por ejemplo, puede usar un control de contenido de bloques de creación para filtrar los tipos de bloques de creación que ve un usuario, lo que significa que el usuario no puede insertar un bloque de creación en un documento en que no esté permitido en un lugar específico del documento. Hay varios ejemplos en las secciones siguientes que muestran cómo utilizar los objetos de bloques de creación para trabajar con bloques de creación mediante programación.

Tareas sencillas

Las secciones siguientes ofrecen ejemplos simples de cómo realizar tareas específicas mediante objetos de bloques de creación. Puede encontrar ejemplos de código adicionales en los temas de objetos y en muchos de los temas de miembros.

Creación de un bloque de creación personalizado

Crear un bloque de creación personalizado es tan sencillo como usar el método Add para la colección BuildingBlockEntries . También puede utilizar el método Add para la colección BuildingBlocks; no obstante, este método puede producir un error en tiempo de ejecución si no hay actualmente bloques de creación para el tipo o categoría especificados. Como se explica en la tabla de objetos, la colección BuildingBlocks es una colección de bloques de creación para un tipo y categoría específicos. La colección BuildingBlocksEntries contiene todos los bloques de creación para una plantilla. Por tanto, la forma preferida de agregar nuevos bloques de creación mediante programación, consiste en utilizar el método Add para la colección BuildingBlockEntries.

El ejemplo de código siguiente contrae la selección actual, crea un intervalo y especifica el texto para el rango. A continuación, agrega la selección como bloque de creación personalizado a la colección de entradas de bloques de creación en la plantilla adjunta al documento actual.

Sub AddCustomBuildingBlock() 
 
 Dim objTemplate As Template 
 Dim objBB As BuildingBlock 
 Dim objRange As Range 
 
 ' Set the template to store the building block 
 Set objTemplate = ActiveDocument.AttachedTemplate 
 
 ' Collapse the range, set the range, and add the text 
 Selection.Collapse 
 Set objRange = Selection.Range 
 objRange.Text = "Building blocks for the technically challenged" 
 
 ' Add the building block to the template 
 Set objBB = objTemplate.BuildingBlockEntries.Add( _ 
 Name:="Title", _ 
 Type:=wdTypeCustomHeaders, _ 
 Category:="Book Titles", _ 
 Range:=objRange) 
 
End Sub

Adición de una nueva categoría

Como se indicó anteriormente, puede agregar un número ilimitado de categorías. Sin embargo, no hay método Add para la colección Categories. Por tanto, para agregar una categoría nueva a la colección, tiene que agregar un bloque de creación nuevo. Por ejemplo, en el ejemplo de código anterior, si la categoría "Títulos de libros" no existe cuando ejecuta el código, Word la agrega a la colección Categories.

Acceso a un bloque de creación existente

En algún momento querrá acceder a uno de los bloques de creación que tiene, ya sea un bloque de creación personalizado o uno de los bloques de creación integrados. Podría utilizar la colección BuildingBlockEntries; sin embargo, dado que los bloques de creación pueden compartir el mismo nombre, tendría que identificar el tipo y la categoría del bloque de creación antes de saber cuál desea que se devuelva. Por tanto, la mejor forma de tener acceso a los bloques de creación existentes es a través de la colección BuildingBlocks.

En el ejemplo de código siguiente, se tiene acceso al bloque de creación que se agregó en el ejemplo de código anterior.

Sub GetExistingBuildingBlock() 
 
 Dim objTemplate As Template 
 Dim objBB As BuildingBlock 
 
 ' Set the template where the building block is stored 
 Set objTemplate = ActiveDocument.AttachedTemplate 
 
 ' Access the building block through the type and category 
 Set objBB = objTemplate.BuildingBlockTypes(wdTypeCustomHeaders) _ 
 .Categories("Book Titles").BuildingBlocks("Title") 
 
End Sub

Inserción de un bloque de creación en un documento

Después de tener acceso al bloque de creación, use el método Insert del objeto BuildingBlock para insertarlo en un documento. En el siguiente ejemplo de código se amplía el ejemplo de código anterior agregando una línea para insertar la creación en el documento activo en el Punto de inserción (o para reemplazar el texto seleccionado, si lo hay).

Nota:

Cuando se inserta un bloque de creación mediante la cinta de opciones, Word determina automáticamente ciertos aspectos sobre el bloque de creación como, por ejemplo, dónde insertarlo; pero cuando se inserta un bloque de creación a través del modelo de objetos, no se ejecuta automáticamente esta inteligencia integrada. Por ejemplo, cuando se inserta un bloque de creación de encabezado mediante la cinta, Word determina automáticamente que se reemplace el encabezado existente. Al insertar el mismo bloque de creación de encabezado mediante el modelo de objetos, tendrá que especificar explícitamente dónde colocar el texto del bloque de creación.

Sub InsertExistingBuildingBlock() 
 
 Dim objTemplate As Template 
 Dim objBB As BuildingBlock 
 
 ' Set the template where the building block is stored 
 Set objTemplate = ActiveDocument.AttachedTemplate 
 
 ' Access the building block through the type and category 
 Set objBB = objTemplate.BuildingBlockTypes(wdTypeCustomHeaders) _ 
 .Categories("Book Titles").BuildingBlocks("Title") 
 
 ' Insert the building block into the document replacing any selected text 
 objBB.Insert Selection.Range 
 
End Sub

Filtrado de una lista de bloques de creación en un control de contenido

Si combina bloques de creación con controles de contenido, puede filtrar los bloques de creación a los que puede tener acceso un usuario. Ello se consigue mediante un control de contenido y un evento. Cuando un usuario introduce un control de contenido, se ejecuta el evento ContentControlOnEnter del objeto Document. Este evento tiene un parámetro para el control de contenido activo. Puede determinar si el control de contenido es un control de contenido de bloque de creación. Si lo es, utilice la propiedad BuildingBlockType y la propiedad BuildingBlockCategory para identificar el tipo y la categoría que utilizar para filtrar la lista de bloques de creación disponibles para el control de contenido. Esto especifica los bloques de creación que se muestran en la lista desplegable en el encabezado de control de contenido.

En el siguiente ejemplo de código se supone que hay al menos un control de contenido en el documento. Si el control de contenido es un control de contenido de bloque de creación, la lista de bloques de creación mostrada en la lista de bloques de creación del encabezado de control de contenido sólo incluye los agregados mediante la subrutina AddCustomBuildingBlock mostrada anteriormente en este tema. Para obtener más información acerca de los controles de contenido, vea Trabajar con controles de contenido.

Private Sub Document_ContentControlOnEnter(ByVal ContentControl As ContentControl) 
 Dim objCC As ContentControl 
 
 Set objCC = ContentControl 
 
 If objCC.Type = wdContentControlBuildingBlockGallery Then 
 objCC.BuildingBlockType = wdTypeCustomHeaders 
 objCC.BuildingBlockCategory = "Book Titles" 
 End If 
End Sub

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.