使用 VBA 将文本添加到文档中的特定文本框

use*_*110 1 vba ms-word

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

textbox1.text="My Text Goes Here"

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

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

我不想为此使用 ActiveX 控件。

Dav*_*ens 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
Run Code Online (Sandbox Code Playgroud)

您可能会考虑的另一件事是AlternativeText为每个形状添加一个属性。当然,这并不能解决“非唯一性”问题,但您可以使用它(或CustomerData/CustomXMLParts将一些元数据分配给形状,作为识别和区分它们的进一步方法。