安迪想知道是否有任何方法可以“列出”模板中的设置(边距,字体,制表位等)。他已经看到了很多有关重置为默认值的信息,但是没有什么可以告诉他设置的实际含义。他指出,打开模板并查看各种项目比较笨拙,而且不够全面。

不幸的是,在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", "*.dot"

.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。该宏依次调用列表中的其他函数。它获取模板中的一些较常见的设置(当然,您必须指定模板),然后在消息框中显示这些设置。

具体来说,它显示模板的名称,纸张尺寸,页面方向,页边距,制表符(仅适用于模板的第一段)和用户定义的样式。

显然,可以提取和显示许多其他设置。例如,您可能想知道每种样式的特征,而不仅仅是用户定义样式名称的列表。或者,您可能想知道内置样式的格式与默认格式有何不同。仅这些选项就会给宏带来巨大的复杂性。

(考虑到每种样式可以具有数十种不同的格式设置,并且内置样式的“默认格式”由“普通”模板中存储的内容定义。)要包括此类添加,您只需要修改宏即可。汇编所需的信息。

同样要注意的是,尽管篇幅有限,但此处介绍的宏套件仍设计得很简单。它所做的就是将所有提取的设置放入一个字符串中,然后在消息框中显示该字符串。如果您正在查看的模板具有许多用户定义的样式,则字符串可能会变得很长。如果最后的长度超过1,024个字符,则将收到错误消息,因为MsgBox函数只能显示该长度的字符串。如果您预计字符串会更长,则需要在多个消息框中以“块”形式显示它,或者只是将字符串写到一个文本文件中,以便以后检查。

注意:

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

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

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(10117)适用于Microsoft Word 97、2000、2002和2003。您可以在Word(Word 2007)的功能区界面中找到此技巧的版本。和更高版本)在这里: