在Microsoft Word 2010中編寫VBA(無人喜歡的作業)。我試圖將文本框的垂直位置固定到文檔中的某個位置,以便在文本之前添加時,文本框保留其相對位置(即,如果文本在與其鏈接的位置之前插入,則向下移動)。Word 2010中的VBA:如何修復TextBox的相對位置?
我的代碼是
ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, 372, 400, 120, 120).Select
With Selection
.ShapeRange.TextFrame.TextRange.Select
.Collapse
.TypeText Text:="Text box placement test"
With .ShapeRange
.Select
.RelativeHorizontalPosition = wdRelativeHorizontalPositionColumn
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
...
我覺得這是最後一個屬性,RelativeVerticalPosition的關鍵。
我試着將它改爲wdRelativeVerticalPositionLine:這適用於第一段(即文本框固定在文本中的位置,所以如果在正確移動之前添加文本):但是,對於第二段和後段垂直位置是完全錯誤的。
我已經嘗試更改LockAnchor屬性,但沒有任何更改。
令人沮喪的是,這可以手動完成(頁面佈局,排列組,換行文本,更多佈局選項,位置,移動對象與文本=選中),但Word不會讓我記錄一個宏,文本框的屬性,所以我找不到設置的組合,使其工作。
有什麼建議嗎?或者這只是使用20多年的舊代碼的後果之一?
我用'.RelativeVerticalPosition = wdRelativeVerticalPositionLine'檢查了你的問題,它可以正常工作,無論我放哪個段落的形狀。我在Document中有一些文本,運行你的宏,而不是單獨將它設置爲'... PositionLine',它的工作原理。另外一個提示 - 嘗試從你的宏中完全刪除'.Relative ... Position'屬性,這也應該給出好的結果。 – 2013-05-09 06:05:52
謝謝你看KazJaw。沒有 - 它絕對不行,無論是.Relative .... Line還是沒有,大概是因爲我有其他設置。第1段工作正常,但每段都增加了大約6釐米的向下偏移量,所以如果我能夠算出我所在的段落,我可以將其作爲解決方案予以抵消。任何想法如何找到頁面上的段落號碼?謝謝 – TimX 2013-05-09 09:27:46
它很複雜,可能會導致意外的行爲,具體取決於文檔中的文本和對象。如果我有純文本,這是一種在第3頁上選擇第3段的方法:'ActiveWindow.Panes(1).Pages(3).Rectangles(1).Range.Paragraphs(3).Range.Select'如果發生任何錯誤那麼你需要自己試驗代碼。 – 2013-05-09 09:47:38