如何在Word中获取表行的高度

时间:2011-01-07 21:05:20

标签: vba ms-word height

我到处寻找各种各样的东西。人们认为它无法完成。所以我要在这里试试,看看是否有其他人有运气。

当行HeightRule设置为wdRowHeightAuto时,有没有办法在Word中获取表格行的高度?

或者,如果有办法获得单元格的高度,我会接受这个作为解决方案,因为你可以通过找到行的最大单元来计算行的高度。

3 个答案:

答案 0 :(得分:3)

可以使用Range.Information()找到行高。以下代码段不适用于表格中的最后一行或页面的最后一行

Dim Tbl as Table
Dim RowNo as Integer
Dim RowHeight as Double

' set Tbl and RowNo to the table and row number you want to measure

RowHeight=Tbl.Rows(RowNo+1).Range.Information(wdVerticalPositionRelativeToPage) _
    - Tbl.Rows(RowNo).Range.Information(wdVerticalPositionRelativeToPage)

通过计算所选行与下一行之间的位置差异,返回行的高度。

我有一个适用于所有情况的例程,并返回单元格中第二行和后续行的点的高度,即单行单元格返回0.(我在一个减少字体大小的应用程序中使用它某些单元格将文本放在一行上。)

Dim Doc As Document
Dim Tbl As Table

Dim Pos As Long
Dim RowNo As Integer
Dim ColNo As Integer
Dim CellHeight As Single

' set Doc, Tbl, RowNo and Colno to the document,table and row number you want to
' measure or provide a cell's range if you prefer

Pos = Tbl.Cell(RowNo, ColNo).Range.End - 1 ' last character in cell

CellHeight = Doc.Range(Pos, Pos).Information(wdVerticalPositionRelativeToTextBoundary)

答案 1 :(得分:1)

作弊怎么样?

Dim tbl As Word.Table
Dim r As Row
Dim c As Cell

Set tbl = ActiveDocument.Tables(1)

For Each r In tbl.Rows
    iHeight = r.HeightRule
    r.HeightRule = 1
    Debug.Print r.Height
    r.HeightRule = iHeight
Next

答案 2 :(得分:1)

我尝试了上面的内容,发现更改HeightRule会改变行的高度,因为我试图“冻结”事先在我的表格中显示的高度,这使得上面的内容毫无意义。

对于空的行或包含单个一段未包装文本的行,以一致的段落格式添加字体大小,之前和之后的段可以如下工作:

Set r = c.Row
With r
   If .HeightRule <> wdRowHeightExactly Then
        .HeightRule = wdRowHeightExactly
         Set p = c.Range.ParagraphFormat
         .Height = c.BottomPadding + c.TopPadding + p.SpaceBefore + p.SpaceAfter +        p.LineSpacing
    End If
End With