2011-01-07 30 views
3

私は場所を見渡してさまざまなことを試しました。それはできないと仮定されています。だから私はここで試して誰か他の人が運があるかどうかを調べるつもりです。Wordのテーブル行の高さを取得する方法

行のHeightRulewdRowHeightAutoに設定されている場合、Wordでテーブル行の高さを取得する方法はありますか?

代わりに、セルの高さを取得する方法がある場合は、行の最大セルを見つけることで行の高さを計算できるので、これを解決策として受け入れます。

答えて

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 
+0

これは単純なドキュメントで機能します。しかし、私は高さを取得しようとしている間に進行中の他の処理があります。だから、私は決してドキュメントを変更することを伴わないソリューションを探しています。 – Joe

+0

より良い方法はありません。 – Joe

1

私は上記を試してみましたが、HeightRuleを変更すると、私は事前に私のテーブルに表示される内容の高さを「凍結」にしようとしています与えられた、行の高さを変更することがわかった、上記のナンセンスになります。空になっているフォントサイズを加算一貫した段落書式で開封された1段落のテキストを含む行については

次のように、前後のパラが動作することができますが:

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 
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) 

ページの表の最後の行または最後の行のために動作しません1。

私はすべての場合に機能し、セル内の2番目以降の行のポイントで高さを返します。つまり、1行のセルは0を返します。これは、フォントサイズを小さくするアプリケーションで使用します特定のセルでテキストを1行に収めることができます)。

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) 
関連する問題