使用内容控件
内容控件是什么?
内容控件是固定在文档中并可能带有标记的区域,这些区域作为特定类型的内容的容器。 各种内容控件可能包含日期、列表或带格式文本段落等内容。 在某些情况下,内容控件可能会让您想起表单。 不过,内容控件功能更强大、更灵活且用途更广泛,使用它们可创建丰富的结构化内容块。 您可以使用内容控件来创建模板,以在文档中插入定义完善的块。 通过内容控件,您可以:
在模板中指定结构化区域。 每个结构化区域都有自己唯一的 ID,以便对它进行读写。 例如,组合框、图片、文本块和日历均为结构化区域类型(或内容控件)。
确定内容控件的行为。 每个内容控件都组成文档的一部分,作为模板的创建者,您可以指定每个区域的功能。 例如,如果希望模板的某个区域为日历,就可以在文档的该区域中插入一个日历内容控件,该内容控件将自动决定该内容块的功能。 同样,如果希望模板的某个部分显示图像,则可以在该区域创建一个图片内容控件。 按照此方式,可以用预定义的块类型创建模板。
限制修改文档中的内容控件的功能。 可以对每个内容控件进行限制,以使其无法删除或编辑。 例如,如果模板中包含用户只能阅读但不能编辑的版权信息,就可以使用此功能。 或者,作为另一个示例,还可以锁定放置在模板文档中的内容控件,以便用户不会意外删除内容控件中包含的内容。 这使模板与之前的版本相比更强健。
将内容控件的内容映射到自定义 XML 部件中的数据。 例如,如果将纯文本内容控件插入到股票价格表的单元格中,则可以将表单元格中的内容控件映射到包含当前股票价格的 XML 文件中的节点。 当价格发生变化时,外接程序可以编程方式更新附加到每个纯文本内容控件的附加 XML 文件,并且新的更新价格会自动显示在表中。
创建内容控件最简单的方式是通过用户界面(也可以以编程方式创建)。 若要通过用户界面 (UI) 创建内容控件,请选择要转换为内容控件的内容 (例如) 某些文本或图片,然后从“开发人员”功能区的内容控件部分选择所需的内容控件类型。 这会围绕所选内容创建内容控件。
Word 对象模型中的内容控件
下表显示了 Word 对象模型中与内容控件相关的对象。
名称 | 说明 |
---|---|
ContentControl | 每个 ContentControl 对象表示文档中的一个内容控件。 可以使用 ContentControls 集合访问各个 ContentControl 对象。 |
ContentControls | 使用 Document、Range 和 Selection 对象的 ContentControls 属性访问内容控件的集合。 还可以使用 Document 对象的 SelectContentControlsByTitle 方法和 SelectContentControlsByTag 方法访问 ContentControls 集合,其中包含具有相同标题或标记值的特定内容控件。 |
ContentControlListEntry | 如果内容控件为下拉列表或组合框,则 ContentControlListEntry 对象表示列表中的各项。 |
ContentControlListEntries | 使用 ContentControl 对象的 DropdownListEntries 属性访问单个下拉列表或组合框中的所有项。 |
以上每个对象或集合均具有方法和属性,用于分别使用内容控件和以集合形式使用内容控件。 由于内容控件有各种类型(请参阅以下部分"内容控件类型"), ContentControl 对象中的某些成员可能无法适用于所有不同类型的内容控件。 下表显示了 ContentControl 对象的那些属性和方法,这些属性和方法仅适用于某些类型的内容控件。
注意
有关 ContentControl 对象的所有属性和方法的完整列表,请参阅 内容控件。
属性/方法 | 应用于 |
---|---|
BuildingBlockCategory 属性 | BuildingBlock 库内容控件 (wdContentControlBuildingBlockGallery) |
BuildingBlockType 属性 | BuildingBlock 库内容控件 (wdContentControlBuildingBlockGallery) |
DateDisplayFormat 属性 | 日期内容控件 (wdContentControlDate) |
DateDisplayLocale 属性 | 日期内容控件 (wdContentControlDate) |
DateStorageFormat 属性 | 日期内容控件 (wdContentControlDate) |
DropdownListEntries 属性 | 组合框和下拉列表内容控件 (wdContentControlComboBox 和 wdContentControlDropdownList) |
MultiLine 属性 | 纯文本内容控件 (wdContentControlText) |
Ungroup 方法 | 将内容控件 (wdContentControlGroup) |
SetCheckedSymbol 方法 | 复选框内容控件 (wdContentControlCheckBox) |
SetUncheckedSymbol 方法 | 复选框内容控件 (wdContentControlCheckBox) |
内容控件类型
可以向文档添加八种不同类型的内容控件,其中每个控件都用名为 WdContentControlType 的新枚举表示。
内容控件类型 | 说明 | WdContentControlType 常量 |
---|---|---|
复选框。 | wdContentControlCheckBox | |
日历 | 日期时间选取器。 | wdContentControlDate |
构建基块 | 允许用户从指定构建基块中选择。 | wdContentControlBuildingBlockGallery |
下拉列表 | 下拉列表。 | wdContentControlDropDownList |
组 | 定义用户无法编辑或删除的文档的受保护区域。 组控件可以包含任何文档项,例如文本、表、图形和其他内容控件。 | wdContentControlGroup |
组合框 | 组合框。 | wdContentControlComboBox |
图片 | 图片。 | wdContentControlBlockPicture |
格式文本 | 格式文本块。 | wdContentControlRichText |
纯文本 | 纯文本块。 | wdContentControlText |
内容控件事件
除了 Word 中内容控件对象模型提供的属性和方法外,还可以使用多个事件,以便在添加或删除内容控件或用户编辑内容控件时运行代码。 以下列表描述了每个事件以及事件代码运行的时间。 所有这些事件均是 Document 对象的成员。
"事件名称" | 说明 |
---|---|
ContentControlAfterAdd | 在向文档添加新内容控件之后发生。 无论用户是使用用户界面中的工具添加内容控件,还是使用代码添加内容控件,此事件都会运行。 |
ContentControlBeforeContentUpdate | 在 Word 更新内容控件中的内容之前发生。 |
ContentControlBeforeDelete | 在用户删除内容控件之前发生。 无论用户是使用用户界面中的工具删除内容控件,还是使用代码删除内容控件,此事件都会运行。 |
ContentControlBeforeStoreUpdate | 在 Word 根据文档数据存储区中的数据更新内容控件中的内容之前发生。 |
ContentControlOnEnter | 当用户进入内容控件时发生。 |
ContentControlOnExit | 当用户退出内容控件时发生。 |
使用代码
无论是添加内容控件、删除内容控件,还是访问现有内容控件和对现有内容控件进行操作,都可以通过代码来完成。 以下部分仅列出了用代码执行操作的少数几个示例。
添加内容控件
如前所述,可以向文档添加八种不同类型的内容控件。 可以使用 ContentControls 集合的 Add 方法向文档添加内容控件。 以下示例向活动文档添加一个日期选取器,并将日期值设置为当前日期。
Sub AddDatePicker()
Dim objCC As ContentControl
Dim objDate As Date
Set objCC = ActiveDocument.ContentControls _
.Add(wdContentControlDate)
objDate = Date
objCC.Range.Text = objDate
End Sub
使用相同的基本构造将任意不同类型的内容控件添加到文档中。
向内容控件添加标题
可以使用 Title 属性向内容控件添加标题。 标题是用户所见到的文本,可以帮助用户了解要向内容控件输入哪种数据类型。 以下示例向活动文档添加一个新的纯文本内容控件,并设置控件的标题或显示控件的文本。
Sub SetTitleForContentControl()
Dim objCC As ContentControl
Set objCC = ActiveDocument.ContentControls _
.Add(wdContentControlText)
objCC.Title = "Please enter your name"
End Sub
修改内容控件的占位符文本
占位符文本是临时性的文本。 它可以是任何内容,从一到两个简单的字词说明(如标题)到详细的说明(如编号的步骤)。 无论内容控件的类型或内容控件的预期内容如何,对占位符文本的修改都是一样的。 以下示例向活动文档添加一个下拉列表,并为控件设置占位符文本,然后用多个动物名称填充列表。
Sub SetPlaceholderText()
Dim objCC As ContentControl
Set objCC = Selection.ContentControls _
.Add(wdContentControlComboBox)
objCC.Title = "Favorite Animal"
objCC.SetPlaceholderText _
Text:="Please select your favorite animal "
'List entries
objCC.DropdownListEntries.Add "Cat"
objCC.DropdownListEntries.Add "Dog"
objCC.DropdownListEntries.Add "Horse"
objCC.DropdownListEntries.Add "Monkey"
objCC.DropdownListEntries.Add "Snake"
objCC.DropdownListEntries.Add "Other"
End Sub
以上只介绍了使用对象模型对文档中的内容控件进行操作的少数几种方式。 有关更多示例,请参阅操作方法部分。
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。