我想在文檔的每個頁面的右上角放置一個徽標。此功能已存在於由我們管理的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