2017-05-02 11 views
0

Word 2016でVBAを使用していて、段落のサイズの矩形を作成したい(他の理由で境界フィーチャーを使用できません)。段落の境界ボックスのサイズを調べる(Word VBA)

このコードを使用して最初の文字の位置を取得できますが、段落の下端と右端はどうなりますか?

x = Selection.Information(wdHorizontalPositionRelativeToPage) 
y = Selection.Information(wdVerticalPositionRelativeToPage) 

残念ながら、次はちょうど私の希望的観測です:

w = Selection.Paragraphs(1).Width 
h = Selection.Paragraphs(1).Height 

最後に、私は、段落の周りのバウンディングボックスと同じサイズの矩形を生成するには、次を実行します:

ActiveDocument.Shapes.AddShape msoShapeRectangle, x, y, w, h 

何か助けていただければ幸いです。ありがとうございました!

答えて

0

あなたの選択によって示されたパラグラフに関して考えているときは正しい方向にあります。私の好みは選択によって示された範囲に対処することですが、それは個人的な好みの問題です。とにかく、パラグラフは、とりわけ、最初の文字と最後の文字に分けることができます。あなたがすでに述べたように、ページ上の拳のキャラクターの位置は、あなたの矩形の左上隅に非常に近いです。最後の文字についても同様の関係を確立することができます。次のコードは、あなたを助けるかもしれません。あなたが段落に設定されたマージンを参照する必要があり、左右については

Private Sub TestPos() 

    Dim Rng As Range 
    Dim x As Single, y As Single 

    Set Rng = Selection.Range 
    Set Rng = Rng.Paragraphs(1).Range 
    With Rng 
     x = .Information(wdHorizontalPositionRelativeToPage) 
     y = .Information(wdVerticalPositionRelativeToPage) 
     Debug.Print x, y 
     .Collapse wdCollapseEnd 
     x = .Information(wdHorizontalPositionRelativeToPage) 
     y = .Information(wdVerticalPositionRelativeToPage) 
     Debug.Print x, y 
     Debug.Print .Paragraphs(1).LineSpacing 
    End With 
End Sub 

。次のコードには、必要な構文が含まれています。

Private Sub ShowPageSetup() 

    Dim Rng As Range 

    With ActiveDocument.PageSetup 
     Debug.Print .LeftMargin, .RightMargin 
    End With 
    Set Rng = Selection.Range 
    With Rng.Paragraphs(1).Range.ParagraphFormat 
     Debug.Print .LeftIndent, .RightIndent 
    End With 
End Sub 
関連する問題