2015-07-11 28 views
0

我正在構建一個Word VSTO(VB.NET)程序,我需要從頂部,左側,右側和底部找到形狀點中的確切位置。我使用下面的代碼,Word VSTO - 查找文檔中形狀的位置?

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值。

回答

1

這就是爲什麼前值是錯誤的,

在高級版式對話框(文字環繞>更多佈局選項...),

enter image description here

的標有紅色矩形的組合框必須設置爲邊距。頂值錯誤的原因是因爲絕對位置...低於設置爲段落而不是保證金。當此設置爲保證金上限值變得正確。