Word VSTO - 在文档中查找形状的位置?
Word VSTO - Finding the location of a shape in the document?
我正在构建一个 Word VSTO (VB.NET) 程序,我需要在其中从顶部、左侧、右侧和底部找到形状的精确位置。我使用下面的代码,
objShape = Globals.ThisAddIn.Application.ActiveDocument.Shapes(intShapesLoop)
objShape.RelativeHorizontalPosition = Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionMargin
objShape.Select()
sngPageWidth = Globals.ThisAddIn.Application.Selection.Range.PageSetup.PageWidth
sngPageHeight = Globals.ThisAddIn.Application.Selection.Range.PageSetup.PageHeight
sngMarginsLeft = objShape.Left + Globals.ThisAddIn.Application.Selection.Range.PageSetup.LeftMargin
sngMarginsRight = sngPageWidth - (objShape.Width + sngMarginsLeft + sngGutterPosistionRight)
这很好用,并显示了左和右的正确位置值。但是,我将以下代码用于顶部和底部位置,
sngMarginsTop = objShape.Top + Globals.ThisAddIn.Application.Selection.Range.PageSetup.TopMargin
sngMarginsBottom = sngPageHeight - (objShape.Height + sngMarginsTop)
这显示了错误的位置值。这里的问题是什么?从 Top 值来看,它显示比正确值少大约 12 个点
我发现这种情况只发生在少数文档上。它在大多数文档中显示正确的 Top 值,但在少数文档中显示错误的 Top 值。
这就是top值错误的原因,
在“高级布局”对话框中(文本环绕 > 更多布局选项...),
红色矩形标记的组合框必须设置为边距。 top 值错误的原因是因为 Absolute position ... below 设置为 Paragraph 而不是 Margin。当它设置为 Margin 时,最高值变得正确。
我正在构建一个 Word VSTO (VB.NET) 程序,我需要在其中从顶部、左侧、右侧和底部找到形状的精确位置。我使用下面的代码,
objShape = Globals.ThisAddIn.Application.ActiveDocument.Shapes(intShapesLoop)
objShape.RelativeHorizontalPosition = Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionMargin
objShape.Select()
sngPageWidth = Globals.ThisAddIn.Application.Selection.Range.PageSetup.PageWidth
sngPageHeight = Globals.ThisAddIn.Application.Selection.Range.PageSetup.PageHeight
sngMarginsLeft = objShape.Left + Globals.ThisAddIn.Application.Selection.Range.PageSetup.LeftMargin
sngMarginsRight = sngPageWidth - (objShape.Width + sngMarginsLeft + sngGutterPosistionRight)
这很好用,并显示了左和右的正确位置值。但是,我将以下代码用于顶部和底部位置,
sngMarginsTop = objShape.Top + Globals.ThisAddIn.Application.Selection.Range.PageSetup.TopMargin
sngMarginsBottom = sngPageHeight - (objShape.Height + sngMarginsTop)
这显示了错误的位置值。这里的问题是什么?从 Top 值来看,它显示比正确值少大约 12 个点
我发现这种情况只发生在少数文档上。它在大多数文档中显示正确的 Top 值,但在少数文档中显示错误的 Top 值。
这就是top值错误的原因,
在“高级布局”对话框中(文本环绕 > 更多布局选项...),
红色矩形标记的组合框必须设置为边距。 top 值错误的原因是因为 Absolute position ... below 设置为 Paragraph 而不是 Margin。当它设置为 Margin 时,最高值变得正确。