2013-09-23 42 views
1

有沒有一種方法可以命名MS Word中的文本框,以便我可以在vba中調用它們並向它們添加文本?​​例如,我有一個用戶窗體可以獲取一些數據從user.after的數據有一些計算,我想顯示在文本框或方程... 像文件的結果,在Visual Basic中,我們有:使用VBA將文本添加到文檔中的特定文本框

textbox1.text="My Text Goes Here"

我們是否有類似的東西在VBA中?像:

ActiveDocument.textboxname.text="My Text"?!!

我不想爲此使用activeX控件。

回答

2

在Word和PowerPoint中,只能使用VBA爲名稱指定一個形狀(與Excel中您可以在公式欄中執行此操作的對比)。

Word不會強制形狀具有唯一的名稱,因此可能有兩種形狀,分別命名爲Text Box 2。您也可以通過ActiveDocument.Shapes集合中的索引位置來引用形狀。

一旦你確定你需要什麼Shape的工作,那麼你可以簡單地操縱.TextFrame.TextRange.Text屬性:

Sub Test() 
Dim shp As Shape 
Dim str As String 

For Each shp In ActiveDocument.Shapes 
    str = "My name is " & shp.Name 
    str = str & vbNewLine & "My EditID is " & shp.EditID 
    shp.TextFrame.TextRange.Text = str 
Next 
End Sub 

一個你可能會考慮其他的事情是增加一個AlternativeText屬性爲每個形狀。當然,這並沒有解決「非唯一性」的問題,但你可以使用這個(或CustomerData/CustomXMLParts分配一些到形狀,作爲識別和區分他們的另一手段。

1

有幾種可能性如何利用CC,但在我看來,最好的選擇是將每個已驗證的段落包裝成CC。

Dim par As Paragraph 

'set reference to appropriate paragraph 
Set par = ActiveDocument.Paragraphs(2) 

Dim cc As ContentControl 
Set cc = ActiveDocument.ContentControls.Add(_ 
      wdContentControlRichText, par.Range) 

cc.Tag = "VERIFIED" 

'options 
'disable deletion of CC 
cc.LockContentControl = True 

'disable edition of CC 
cc.LockContents = True 
相關問題