通过Word填写表单ms-word VBA /最有效的智能导航

Mik*_*ogg 8 vba ms-word word-vba

简介:我的公司向客户发送信件,并希望我写一个宏来填写已在word文档中设置的不同文本表单字段,因为发送的不同信件之间的数量变化非常有限.我在excel中做过宏,但这是我第一次遇到ms-word宏

问题:我很难通过ms-word找到有效的智能导航.我确实找到了关于向不同方向移动的文章, 这与箭头键非常相似.希望能够深入了解导航word文档的最佳方式.例如,我应该循环移动到正确的1空间,直到找到有意义的东西或者是否有更有效的方法?

问题:是否可以在变量中存储特定的表单位置,或者ms-word是否没有坐标系?

提前致谢!

Sid*_*out 9

要使用内容控件,您必须确保已设置Title控件.Tag如果需要,您也可以设置它.请参见快照

在此输入图像描述

然后,您可以使用此代码更新内容控件或检索其值

Sub Sample()
    Dim cc As ContentControl

    For Each cc In ActiveDocument.ContentControls
        If cc.Title = "MyTextBox1" Then
            cc.Range.Text = "Hello World!"
            Exit For
        End If
    Next cc
End Sub
Run Code Online (Sandbox Code Playgroud)

运行代码时,这就是它的外观

在此输入图像描述

要获取控件的文本,您可以使用 Debug.Print cc.Range.text


小智 6

最近Windows版本的Word中至少有三种类型的表单字段 - 内容控件,"旧表单字段"和ActiveX表单字段.假设您正在处理旧版表单字段,您应该能够使用书签名称索引FormFields集合,然后使用,例如

ActiveDocument.FormFields("Text1").Result = "mytextformfieldresult"

ActiveDocument.FormFields("DropDown1").Result = "mydropdownformfieldresult"

ActiveDocument.FormFields("Check1").Checkbox.Value = True
Run Code Online (Sandbox Code Playgroud)