Как получить высоту строки таблицы в Word - PullRequest
3 голосов
/ 08 января 2011

Я посмотрел повсюду и пробовал разные вещи.Предполагалось, что это не может быть сделано.Итак, я собираюсь попробовать здесь и посмотреть, повезло ли кому-нибудь еще.

Есть ли способ получить высоту строки таблицы в Word, когда для строки HeightRule установлено значение wdRowHeightAuto?

В качестве альтернативы, если вместо этого есть способ получить высоту ячейки, я приму это как решение, поскольку вы можете рассчитать высоту строки, найдя самую большую ячейку строки.

Ответы [ 3 ]

3 голосов
/ 07 февраля 2013

Можно найти высоту строки с помощью 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 голос
/ 08 августа 2012

Я попробовал вышеупомянутое и обнаружил, что изменение 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
1 голос
/ 08 января 2011

Как насчет обмана?

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...