【问题标题】:Find Bounding Box dimensions for a paragraph (Word VBA)查找段落的边界框尺寸(Word VBA)
【发布时间】:2017-09-30 02:00:17
【问题描述】:

我在 Word 2016 中使用 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

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: vba ms-word position bounding-box paragraph


    【解决方案1】:

    当您根据您选择的段落进行思考时,您就走在了正确的轨道上。我的偏好是处理选择所指示的范围,但这是个人喜好问题。无论如何,段落可以被划分为——尤其是——第一个字符和最后一个字符。正如您已经说过的,页面上第一个字符的位置非常靠近矩形的左上角。可以为最后一个字符建立类似的关系。以下代码可能会帮助您。

    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
    

    【讨论】:

      猜你喜欢
      • 2011-01-09
      • 1970-01-01
      • 2014-08-26
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多