اندی تعجب می کند که آیا راهی برای "لیست" تنظیمات در یک الگو (حاشیه ها، فونت ها، توقف های تب و غیره) وجود دارد. او اطلاعات زیادی در مورد بازنشانی به پیشفرض دیده است، اما چیزی که به او نمیگوید تنظیمات واقعاً چه هستند. او خاطرنشان میکند که باز کردن یک الگو و نگاه کردن به آیتمهای مختلف دشوار و جامع نیست.
متأسفانه هیچ راه آسانی برای انجام این کار در Word وجود ندارد. دلیل اصلی این است که لیست کاملی از تنظیمات ذخیره شده در قالب ها وجود ندارد و تعداد زیاد این تنظیمات می تواند بسیار دلهره آور باشد. بهترین کاری که می توانید انجام دهید این است که یک ماکرو ایجاد کنید که تنظیمات مورد نظر شما را بررسی کرده و سپس آنها را نمایش دهد.
به عنوان مثال، مجموعه ماکروهای زیر را در نظر بگیرید:
Sub TemplateSettings()
Dim templatePath As String
Dim fleName As String
Dim str As String
Dim sTemp As String
" Select the template to be opened
templatePath = Application.Templates(1).Path
fleName = GetTemplateName(templatePath)
If fleName = "" Then
MsgBox "No template selected"
Exit Sub
End If
Application.Documents.Open (fleName)
str = ActiveDocument.Name & vbCr & vbCr
sTemp = "Other"
Select Case ActiveDocument.Sections(1).PageSetup.PaperSize
Case wdPaperLetter
sTemp = "Letter"
Case wdPaperLegal
sTemp = "Legal"
Case wdPaperA4
sTemp = "A4"
End Select
str = str & "Paper size: " & sTemp
sTemp = "Landscape"
If ActiveDocument.Sections(1).PageSetup.Orientation = wdOrientPortrait Then
sTemp = "Portrait"
End If
str = str & " Orientation: " & sTemp & vbCr
str = str & "Margins " & marginsStr & vbCr
str = str & vbCr & "User Defined Tab stops " & UserTabStops & vbCr
str = str & vbCr & "User defined styles " & userStyles
Application.Documents(fleName).Close SaveChanges:=wdDoNotSaveChanges
MsgBox str
End Sub
Function GetTemplateName(templatePath As String) As String
Dim dlg As FileDialog
Set dlg = Application.FileDialog( _
FileDialogType:=msoFileDialogFilePicker)
With dlg
.AllowMultiSelect = False
.InitialFileName = templatePath
.Filters.Clear
.Filters.Add "Templates", "*.dotx; *.dotm"
.Filters.Add "All files", "*.*"
.FilterIndex = 1
.Show
If .SelectedItems.Count > 0 Then
GetTemplateName = .SelectedItems(1)
Else
GetTemplateName = ""
End If
End With
Set dlg = Nothing
End Function
Function userStyles() As String
Dim sty As Style
Dim s As String
s = ""
For Each sty In ActiveDocument.Styles
If Not sty.BuiltIn Then
s = vbCr & sty.NameLocal & " " & sty.Description
End If
Next sty
userStyles = s
End Function
Function UserTabStops() As String
Dim s As String
Dim tbStop As TabStop
Dim alg
alg = Array("Left", "Center", "Right", "Decimal", "Bar", "?", "List")
s = ""
For Each tbStop In ActiveDocument.Paragraphs(1).TabStops
s = s & vbCr & ptConvert(tbStop.Position) & _
" Alignment: " & alg(tbStop.Alignment)
Next tbStop
UserTabStops = s
End Function
Function marginsStr() As String
With ActiveDocument
marginsStr = _
"Left: " & ptConvert(.PageSetup.LeftMargin) & _
", Right: " & ptConvert(.PageSetup.RightMargin) & _
", Top: " & ptConvert(.PageSetup.TopMargin) & _
", Bottom: " & ptConvert(.PageSetup.BottomMargin)
End With
End Function
Function ptConvert(p As Single) As String
ptConvert = Format(PointsToInches(p), "###.##")
" use the following line if you want dimensions in centimeters
"ptConvert = Format(PointsToCentimeters(p), "###.##")
End Function
ماکرو اصلی که با آن شروع می کنید TemplateSettings است. این ماکرو به نوبه خود سایر توابع موجود در لیست را فراخوانی می کند. برخی از تنظیمات رایجتر در قالب را میگیرد (البته میتوانید الگو را مشخص کنید) و سپس آن تنظیمات را در یک جعبه پیام نمایش میدهد. به طور خاص، نام قالب، اندازه کاغذ، جهت صفحه، حاشیهها، توقفهای برگه (فقط برای اولین پاراگراف در الگو) و سبکهای تعریفشده توسط کاربر را نمایش میدهد.
بدیهی است که بسیاری از تنظیمات دیگر وجود دارد که می توانند استخراج و نمایش داده شوند. به عنوان مثال، ممکن است بخواهید بدانید که ویژگیهای هر سبک چیست، نه فقط فهرستی از نامهای سبک تعریف شده توسط کاربر. یا ممکن است بخواهید بدانید که چگونه قالب بندی برای سبک های داخلی با قالب بندی پیش فرض متفاوت است. فقط همین گزینه ها به تنهایی پیچیدگی زیادی را به ماکرو وارد می کند. (در نظر بگیرید که هر سبک میتواند دهها تنظیمات قالببندی مختلف داشته باشد و «قالببندی پیشفرض» برای سبکهای داخلی با آنچه در قالب عادی ذخیره میشود، تعریف میشود.) برای گنجاندن چنین مواردی، فقط باید ماکرو را تغییر دهید. برای جمع آوری و گردآوری اطلاعات مورد نظر.
همچنین توجه داشته باشید که مجموعه ماکرو ارائه شده در اینجا علیرغم طول آن، ساده طراحی شده است. تنها کاری که انجام می دهد این است که تمام تنظیمات استخراج شده را در یک رشته قرار می دهد و سپس آن رشته را در یک جعبه پیام نمایش می دهد. اگر قالبی که به آن نگاه میکنید دارای سبکهای بسیار بسیار زیادی است که توسط کاربر تعریف شده است، پس ممکن است رشته بسیار طولانی شود. اگر خیلی طولانی شود، یک خطایی دریافت خواهید کرد زیرا تابع MsgBox فقط می تواند یک پیام نسبتاً کوتاه را نمایش دهد. اگر پیش بینی می کنید که رشته شما طولانی تر شود، می خواهید آن را به صورت "تکه ها" به صورت چندگانه نمایش دهید. جعبه های پیام، یا به سادگی رشته را در یک فایل متنی بنویسید که بعداً می توانید بررسی کنید.