Sheryl例行创建的文档中包含很多表。

每个表的一致之处在于它们具有相同的总体布局。 (每个列包含相同数量的列,每个列包含相同类型的信息。)Sheryl正在寻找一种方法来确保所有表中列的宽度一致。

解决方案取决于您何时需要创建表。如果文档是新文档,则以一致的方式创建表非常容易。如其他_WordTips_中所述(我将不在这里介绍),您可以将标准表另存为Building Block条目或创建定义您希望表显示方式的表样式。必要时,您只需插入Building Block条目或应用样式,表格就会根据需要显示。

如果已经创建了文档,而您只想将一致性应用于文档中存在的表,则解决方案会涉及更多的内容。在这种情况下,解决方案是使用宏来更改列的宽度。

可以通过以下方式创建一个宏,该宏将快速遍历文档中的每个表格并使表格中的每一列具有相同的宽度:

Sub SetColumnWidths1()

Dim t As Table     For Each t In ActiveDocument.Tables         t.Columns.Width = InchesToPoints(2)

Next t End Sub

但是,您不希望每一列都为2英寸宽,这是很好的选择。您可能希望每列都是特定的宽度,而不是其他列。宏的以下迭代处理了这种可能性:

Sub SetColumnWidths2()

Dim t As Table     For Each t In ActiveDocument.Tables         t.Columns(1).Width = InchesToPoints(2)

t.Columns(2).Width = InchesToPoints(2.5)

t.Columns(3).Width = InchesToPoints(3)

Next t End Sub

这种宏的缺点是您需要在编码中指定每列的宽度。另外,如果您的文档中有一个异常表(它的列数与其他所有表都不一样),则宏会巧妙地尝试设置列的宽度。

那么,更好的方法可能是在文档中有一个“模型”表,然后设置所有其他表,以使它们使用与该表相同的列宽。一种简单的方法是手动设置文档中第一个表的列宽的格式,然后让宏检查该表并将其用作其余表列的模式。

Sub SetColumnWidths3()

Dim t As Table     Dim c As Column     Dim ccnt As Integer     Dim w() As Single     Dim J As Integer     Dim K As Integer

Set t = ActiveDocument.Tables(1)

ccnt = t.Columns.Count     ReDim w(ccnt)

J = 0     For Each c In t.Columns         J = J + 1         w(J) = c.Width     Next c

For J = 2 To ActiveDocument.Tables.Count         Set t = ActiveDocument.Tables(J)

If t.Columns.Count = ccnt Then             For K = 1 to ccnt                 t.Columns(K).Width = w(K)

Next K         Endif     Next J End Sub

该宏检查第一个表中的列数(将值分配给ccnt变量),然后查看每个列的宽度(将值分配给w数组)。然后,它逐步浏览文档中其余的表,并且如果表中的列数与ccnt变量中的数匹配,则会将每列的宽度设置为w数组中存储的宽度。结果是文档中的每个表(至少,与第一个表具有相同列数的表)具有相同的列宽。

这里有一个潜在的难题:如果文档中的表以任何方式使用合并的单元格,则可能会弄乱您获得的结果。在这种情况下,您将需要在运行宏之前保存文档。

这样,您可以目视检查结果,然后在必要时还原到保存的文档。

注意:

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

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

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(11693)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。 Word的旧菜单界面在这里: