1

有没有办法在 MS Word 中命名文本框,以便我可以在 vba 中调用它们并向它们添加文本?​​例如,我有一个从用户获取一些数据的用户表单。在对这些数据进行一些计算之后,我想显示文本框或方程式中文档上的结果......就像,在visual basic中我们有:

textbox1.text="My Text Goes Here"

我们在 VBA 中有类似的东西吗?喜欢 :

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

我不想为此使用 activeX 控件。

4

2 回答 2

5

在 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将一些元数据分配给形状,作为识别和区分它们的进一步手段。

于 2013-09-23T13:52:00.820 回答
2

您可以利用 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
于 2014-06-06T12:11:17.377 回答