我想在文档的每个页面的右上角放置一个徽标。此功能已存在于由我们管理的Word加载项中。但是,此功能无法正常工作。该加载项将图像转换为形状,然后将此图像与左侧文档角落放置在一个固定的距离处。这适用于A4格式的文档,但只要文档的方向或大小发生更改,徽标位置就会关闭。VSTO Word&Visual basic:Shape.Left属性不承担指定值
我已经尝试了很多策略来解决这个问题,但还没有找到一个令人满意的方法。我目前的策略是动态确定左页面和徽标之间的距离,然后通过调用.RelativeHorizontalPosition属性并将其链接到右边空白区域来使该位置相对于页面的右侧。
不幸的是与Shape对象的.Left属性交互很麻烦。 .Left属性不具有我分配的值,但是具有负值。我检查了我分配了很多次的参数。有谁会知道为什么会出现这种情况,以及如何解决它?
示例代码
Private Sub AddLogos(section As Section, header As HeaderFooter)
Dim wordApp As Word.Application = Globals.ThisAddIn.Application
Dim pageWidth As Single = section.PageSetup.PageWidth
Dim imgFilePath As String = "filepath"
Dim leftDistanceA4 As Single = 11
Dim logo As Word.Shape
Try
If wordApp.ActiveDocument.SaveFormat >= 12 Then
logo = header.Range.InlineShapes.AddPicture(m_sImageLogo, False, True).ConvertToShape()
Else 'Word 97-2003 Support
logo = header.Shapes.AddPicture(imgFilePath, False, True)
End If
Catch ex As Exception
Throw New Exception("Error message.")
End Try
Dim distanceFromRightPageEdge = wordApp.CentimetersToPoints(21 - leftDistanceA4)
Dim distanceFromLeftPageEdge = pageWidth - distanceFromRightPageEdge
With logo
.RelativeVerticalPosition = WdRelativeVerticalPosition.wdRelativeVerticalPositionPage
.Left = distanceFromLeftPageEdge
.RelativeHorizontalPosition = WdRelativeHorizontalPosition.wdRelativeHorizontalPositionRightMarginArea
End With
谢谢你的回答!我意识到以下技术,但是使用这种技术,我无法在形状/徽标和页面的角落之间留下一些空白区域。有没有办法调整这些代码,以便将徽标放置在离顶部和右侧角1或2厘米处? – Fluous
请参阅编辑,内联形状有许多图形格式选项,但没有太多布局选项。使用表格来保持形状将使您对布局有更多的控制权。 – soohoonigan