有没有办法在MS Word中命名文本框,以便我可以在vba中调用它们并向它们添加文本?例如,我有一个用户表单从用户获取一些数据。在对此数据进行一些计算之后,我想在文本框或方程中显示文档的结果...... 就像,在Visual Basic中我们有:
textbox1.text="My Text Goes Here"
我们在VBA中有类似的东西吗?喜欢:
ActiveDocument.textboxname.text="My Text"
?!!
我不想为此使用activeX控件。
答案 0 :(得分:4)
在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 :(得分: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