2017-05-02 12 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