Karenは、Wordで利用可能なすべてのビルディングブロックのリストを印刷したいと思っていますが、その方法を見つけることができないようです。定型句のリストを印刷することはできますが、それはシステム上に持つことができるビルディングブロックのより大きなグループのサブセットにすぎません。

システム上のすべてのビルディングブロックを印刷する組み込み機能はありませんが、ビルディングブロック情報にアクセスするためのマクロを作成できます。ビルディングブロックはテンプレートに保存され、BuildingBlocks.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

最良の結果を得るには、新しいドキュメントを開きます。マクロがビルディングブロック情報を配置するのはこのドキュメントです。マクロを実行する前に、リボンの[挿入]タブを表示し、[クイックパーツ]、[クイックパーツ]の順にクリックして、BuildingBlocks.dotxを開く必要があります。ビルディングブロックオーガナイザー。この方法でBuildingBlocks Organizerを表示すると、WordがBuildingBlocks.dotxテンプレートを開くようになります。

マクロを実行すると、各テンプレート、テンプレート内の各タイプのビルディングブロック、各タイプの各カテゴリ、最後に各カテゴリの各ビルディングブロックがステップ実行されます。各ビルディングブロックの名前、説明、および実際の値が印刷されます。

ビルディングブロックはテキスト以上のものであるため、これは期待するほど「きれいな」結果をもたらさない可能性があります。本格的なプログラムにすることもできます。これにより、マクロによって作成されたドキュメントにファンキーな文字が含まれる場合があります。

このマクロについて注意すべき他の興味深い点もあります。外側のループは、ForEachループを使用して各テンプレートをステップスルーすることに注意してください。

これは、Wordオブジェクトモデルのコレクションを操作する場合には、かなり正常でありふれたことです。ただし、関連するコレクション(BuildingBlockTypes、Categories、BuildingBlocks)はFor Eachループをサポートしていないため、この外側のループ内の3つのネストされたループはForNextループを使用します。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(11096)は、Microsoft Word 2007、2010、2013、2016、2019、およびOffice365のWordに適用されます。