0

我正在构建一个 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)

这显示了错误的位置值。这里有什么问题?从最高值显示,它比正确值少了大约 12 个点

我发现这只发生在少数文件上。它在大多数文档上显示正确的 Top 值,但在少数文档中显示错误的 Top 值。

4

1 回答 1

2

这就是顶部值错误的原因,

在“高级布局”对话框(文本环绕 > 更多布局选项...)中,

在此处输入图像描述

红色矩形标记的组合框必须设置为Margin。顶部值错误的原因是因为下面的 Absolute position ...设置为Paragraph而不是Margin。当这设置为边距时,顶部值变得正确。

于 2015-07-18T05:54:40.307 回答