A Karen le gustaría imprimir una lista de todos los Building Blocks disponibles en Word, pero parece que no puede descubrir cómo hacerlo. Puede imprimir una lista de entradas de Autotexto, pero eso es solo un subconjunto del grupo más grande de Building Blocks que podría tener en un sistema.

No hay capacidad incorporada para imprimir todos los Building Blocks en un sistema, pero puede crear una macro para acceder a la información del Building Block. Los Building Blocks se almacenan en plantillas, y la plantilla Building Blocks.dotx contiene todos los Building Blocks integrados.

Por lo tanto, debe crear una macro que recorra cada plantilla que tenga abierta y obtenga la información de los bloques de construcción de cada una de ellas. Considere el siguiente ejemplo:

Sub PrintBuildingBlocks()

Dim oTemplate As Template     Dim oBBT As BuildingBlockType     Dim oCat As Category     Dim oBB As BuildingBlock     Dim J As Integer     Dim K As Integer     Dim L As Integer

' Loops through all of the open templates     For Each oTemplate In Templates         ' Prints the name of the template         Selection.TypeText oTemplate.Name & vbCrLf         For J = 1 To oTemplate.BuildingBlockTypes.Count             Set oBBT = oTemplate.BuildingBlockTypes(J)

' Checks if the building block category has at least one entry             If oBBT.Categories.Count > 0 Then                 ' Prints the name of the type of building block                 Selection.TypeText vbTab & oBBT.Name & vbCrLf                 For K = 1 To oBBT.Categories.Count                     Set oCat = oBBT.Categories(K)

' Prints the name of the category of the building block                     Selection.TypeText vbTab & vbTab & oCat.Name & vbCrLf                     For L = 1 To oCat.BuildingBlocks.Count                         Set oBB = oCat.BuildingBlocks.Item(L)

' Prints the name, description, and value                         Selection.TypeText vbTab & vbTab & vbTab & _                           "BB " & L & ": " & oBB.Name & vbCrLf                         Selection.TypeText vbTab & vbTab & vbTab & _                           "Description: " & oBB.Description & vbCrLf                         Selection.TypeText vbTab & vbTab & vbTab & _                           "Value: " & oBB.Value & vbCrLf & vbCrLf                     Next L                 Next K             Else                 ' Prints the name of the type of building block AND                 ' mentions that it does not contain any entries                 Selection.TypeText vbTab & oBBT.Name & _                   " (no entries)" & vbCrLf             End If         Next J     Next oTemplate End Sub

Para obtener los mejores resultados, abra un documento nuevo; es en este documento en el que la macro coloca la información del bloque de creación. Antes de ejecutar la macro, Building Blocks.dotx debe abrirse mostrando la pestaña Insertar de la cinta y luego haciendo clic en Quick Parts | Organizador de bloques de construcción. Mostrar el Organizador de Building Blocks de esta manera asegura que Word abre la plantilla Building Blocks.dotx.

Cuando ejecuta la macro, recorre cada plantilla, cada tipo de Building Block en la plantilla, a través de cada categoría en cada tipo y finalmente a través de cada Building Block en cada categoría. Se imprime el nombre, la descripción y el valor real de cada Building Block.

Puede que esto no dé un resultado tan «bonito» como cabría esperar porque los Building Blocks son mucho más que texto; también pueden ser programas completos. Esto puede resultar en algunos caracteres extravagantes en el documento creado por la macro.

También hay algo más interesante que destacar sobre esta macro. Tenga en cuenta que el bucle exterior recorre cada plantilla utilizando un bucle For Each.

Esto es bastante normal y mundano para trabajar con colecciones en el modelo de objetos de Word. Sin embargo, los tres bucles anidados dentro de este bucle externo usan un bucle For Next porque las colecciones involucradas (BuildingBlockTypes, Categorías y BuildingBlocks) no admiten bucles For Each.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.

link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

WordTips es su fuente de formación rentable en Microsoft Word.

(Microsoft Word es el software de procesamiento de texto más popular del mundo). Este consejo (11096) se aplica a Microsoft Word 2007, 2010, 2013, 2016, 2019 y Word en Office 365.