کارن میخواهد فهرستی از تمام بلوکهای ساختمانی موجود در Word را چاپ کند، اما به نظر نمیرسد کشف کند که چگونه این کار را انجام دهد. میتوانید فهرستی از ورودیهای متن خودکار را چاپ کنید، اما این تنها زیرمجموعهای از گروه بزرگتر بلوکهای ساختمانی است که میتوانید در یک سیستم داشته باشید.
هیچ قابلیت داخلی برای چاپ تمام بلوک های ساختمانی در یک سیستم وجود ندارد، اما می توانید یک ماکرو برای دسترسی به اطلاعات بلوک ساختمان ایجاد کنید. Building Blocks در قالبها ذخیره میشوند و الگوی 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 IntegerLoops through all of the open templates For Each oTemplate In TemplatesPrints 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 ThenPrints 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 ElsePrints the name of the type of building block ANDmentions 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 باید با نمایش زبانه Insert روبان باز شود، سپس روی Quick Parts | Building Blocks Organizer. نمایش Building Blocks Organizer به این شکل تضمین می کند که Word قالب Building Blocks.dotx را باز می کند.
هنگامی که ماکرو را اجرا می کنید، از طریق هر الگو، از طریق هر نوع بلوک ساختمانی در قالب، از طریق هر دسته در هر نوع، و در نهایت از طریق هر بلوک ساختمانی در هر دسته گام می گذارد. نام، توضیحات و ارزش واقعی برای هر بلوک ساختمانی چاپ می شود. این ممکن است به همان اندازه که انتظار دارید نتیجه "زیبا" نداشته باشد زیرا Building Blocks بسیار فراتر از متن هستند - آنها می توانند برنامه های کاملی نیز باشند. این ممکن است منجر به برخی از کاراکترهای بد بو در سند ایجاد شده توسط ماکرو شود.
نکته جالب دیگری نیز در مورد این ماکرو وجود دارد. توجه داشته باشید که حلقه بیرونی با استفاده از یک حلقه For Every از هر الگو عبور می کند. این برای کار در مجموعهها در مدل شیء Word بسیار عادی و پیش پا افتاده است. با این حال، سه حلقه تودرتو در این حلقه بیرونی از یک حلقه For Next استفاده میکنند زیرا مجموعههای درگیر (BuildingBlockTypes، Categories و BuildingBlocks) از حلقههای For Every پشتیبانی نمیکنند.