9

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

问题:我很难通过 ms-word 找到有效、智能的导航。我确实找到了这篇关于在不同方向上移动的文章, 这实际上与箭头键相同。希望能深入了解浏览 Word 文档的最佳方式。例如,我应该循环移动到右侧 1 个空格,直到找到有意义的东西还是有更有效的方法?

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

提前致谢!

4

3 回答 3

12

要使用内容控件,您必须确保已设置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

当你运行代码时,它看起来是这样的

在此处输入图像描述

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

于 2012-08-16T16:25:05.563 回答
7

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

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

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

ActiveDocument.FormFields("Check1").Checkbox.Value = True
于 2012-08-16T16:50:02.723 回答
2

您应该能够在文档中需要访问的各个位置创建书签。在现代 Word 中,它位于“链接”组中的“插入”选项卡上。然后您可以从 VBA 访问书签并使用以下代码将文本插入其中:

ActiveDocument.Bookmarks("myBookmark").Range.InsertBefore "Inserted Text"

这个MVP 站点有更多关于该技术的数据。此外,MSDN有一些关于书签对象的数据。

于 2012-08-16T13:56:41.713 回答