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