2013-09-23 126 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 
相关问题