Karen希望打印出Word中可用的所有Building Block的列表,但似乎无法发现如何做到这一点。您可以打印出自动图文集条目的列表,但这只是您在系统上可以拥有的更大组构建块的一部分。

没有内置功能可以打印系统上的所有Building Block,但是您可以创建一个宏来访问Building Block信息。构建基块存储在模板中,而Building Blocks.dotx模板包含所有内置的构建基块。

因此,您需要创建一个宏,以逐步浏览已打开的每个模板,并从每个模板中获取构建基块信息。请考虑以下示例:

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

为了获得最佳效果,请打开一个全新的文档;宏将构建基块信息放入该文档中。在执行宏之前,应通过显示功能区的“插入”选项卡,然后单击“快速零件|零件”来打开Building Blocks.dotx。积木组织者。以这种方式显示Building Blocks Organizer可以确保Word打开Building Blocks.dotx模板。

执行宏时,它会逐步浏览每个模板,模板中每种构建模块的类型,每种类型中的每个类别,最后是每种类别中的每个构建块。将打印每个Building Block的名称,描述和实际值。

这可能不像您希望的那样“漂亮”,因为“构建基块”不仅仅是文本,它们也可以是成熟的程序。这可能会导致宏创建的文档中出现一些时髦的字符。

关于此宏,还有一些有趣的注意事项。请注意,外部循环使用For Each循环逐步遍历每个模板。

这对于处理Word对象模型中的集合是很正常和平凡的。但是,此外部循环中的三个嵌套循环使用For Next循环,因为所涉及的集合(BuildingBlockTypes,Category和BuildingBlocks)不支持For Each循环。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(11096)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。