Word VBA|操作文字型窗体域(添加、删除、自动设置值)(vba用户窗体文本框)

1 窗体

窗体是一种文档,可以用来收集信息。它包括两部分:

一部分是由窗体设计者输入的,可以插入希望得到回答的问题、选项列表、信息表格等。(可设置保护,不被修改,如下图,Word2007在开发工具选项卡,保护→保护文档)

另一部分是由窗体填写者输入的,窗体设计者可以在文档中插入窗体域或 ActiveX 控件,为窗体填写者提供用于收集数据的位置。

Word VBA|操作文字型窗体域(添加、删除、自动设置值)(vba用户窗体文本框)

上述保护设置完成好,只有窗体域的内容允许修改,其他内容被保护起来。

另外,打印时可选择仅打印窗体域内容。

2 插入窗体

Word2007插入窗体:

然后将光标放在要插入文本窗体域的位置,然后在菜单栏上点击“开发工具”选项卡。在选项卡下找到控件栏的“旧式工具”按钮。点击该按钮后弹出窗体工具窗。然后在工具窗中找到文本窗体域并点击。然后插入文本窗体域了。(在Word 2003依次点击“视图”—“工具栏”—“窗体”,这时出现“窗体”工具条,先点击一下该工具条最左边的“ab”按钮以便激活从左往右数的第4个按钮(窗体域选项),激活了该按钮后点击一下该按钮进行设置,最后点击“确定”即可。)

“窗体”工具栏包含了10个功能按钮,由左至右的功能分别是: 插入文字型窗体域、复选框型窗体域、下拉型窗体域、窗体域选项、绘制表格、插入表格、插入图文框、窗体域底纹、重新设置窗体域以及保护窗体。

Word VBA|操作文字型窗体域(添加、删除、自动设置值)(vba用户窗体文本框)

窗体域插入后,单元格中会显示出一个带有灰色阴影的小方块(说明: 此阴影在按下“窗体域底纹”按钮的情况下才会显示的)。需要注意的是,窗体域底纹只在屏幕上显示,用于提醒用户该域的具体位置,并不会被打印出来。

文字型窗体域插入之后,如果有特殊的要求,您还可以其属性进行设定。方法是,单击窗体工具栏上的“窗体域选项”按钮,或者鼠标双击插入的窗体域,即可进入“文字型窗体域选项”对话框。文字型窗体域包含了6种类型,分别为常规文字、数字、日期、当前日期、当前时间以及计算。其中,最常用的当属“常规文字”类型,其次是“数字”类型。对于“数字”类型的窗体域,用户可以在“数字格式”下拉菜单中定义其具体格式。另外,在此对话框中,“添加帮助文字”按钮的作用也非常重要,在设计表单时,您可以利用它对用户可能产生疑惑的单元格添加注释和说明。

Word VBA|操作文字型窗体域(添加、删除、自动设置值)(vba用户窗体文本框)

如下面人文档就是添加了一些文字域后的效果:

Word VBA|操作文字型窗体域(添加、删除、自动设置值)(vba用户窗体文本框)

3 VBA操作域

3.1 设置值:

ActiveDocument.FormFields(\”text1\”).Result = \”小样门诊部\”ActiveDocument.FormFields(\”text7\”).Result = \”10\” & Chr(11) & \”50\”\’上述的text7是域的“书签”名。\’也可以使用下面的代码:ActiveDocument.Fields.Item(1).Result.Text = \”小样门诊部\”

3.2 添加:

ActiveDocument.Fields.Add(Range:=Selection.Range, _Type:=wdFieldUserName)

3.3 删除

ActiveDocument.Fields(1).Delete

3.4 计数

ActiveDocument.Fields.Count

3.5 锁定:

Set theFields = ActiveDocument.Fields If theFields.Locked = wdUndefined Then MsgBox \”Some fields are locked\”

3.6 域代码

ActiveDocument.Fields(1).Code.Text

3.7 取消阴影

ActiveDocument.FormFields.Shaded = False \’取消阴影

3.8 域的链接类型

在word文档中可以插入各种域,域可以有相应的域类型,访问Type属性可以返回域的类型。

除了域类型,还可以通过Kind属性返回域的链接类型。

Word.Application.ScreenUpdating = False Dim oField As Field Dim oDoc As Document Dim oRng As Range Set oDoc = Word.ActiveDocument With oDoc For Each oField In .Fields With oField If .Kind = wdFieldKindNone Then .Delete End If End With Next End With Word.Application.ScreenUpdating = True

3.9 域转换为不含域代码的静态文本

在Field对象中有一个方法是最重要的方法,这个方法是Unlink方法。如果word文档中有很多域,现在想要把所有的域都替换为以域结果显示的静态文本,也就是不再使用域,就可以使用Unlink方法将所有域转换为不含域代码的结果文本。

Word.Application.ScreenUpdating = False Dim oField As Field Dim oDoc As Document Dim oRng As Range Set oDoc = Word.ActiveDocument With oDoc For Each oField In .Fields With oField If .Type = wdFieldSequence Then .Unlink End If End With Next End With Word.Application.ScreenUpdating = TrueEnd Sub

4 表单套打

当用户将填写好的表单发回后,剩下的工作就是打印这些表单了。直接打印当然是最简单的,但是如果要像前面提到的那样,首先批量印刷基本表单,然后逐个进行套打,则会在很大程度上降低成本,打印速度也会得到较大的提升。

表单套打的实现并不复杂。您只需在打印时,不使用Word工具栏上的“打印”按钮,而是选择“文件”*“打印”(或者按下“Ctrl P”组合键),进入“打印”对话框。单击“打印”对话框中的“选项”按钮,在弹出对话框中选中“仅打印窗体域内容”复选项,点击“确定”按钮后即可实现表单套打。

另外,如果是专门为套打而设计表单,则可以在保存表单模板前,选择“工具”*“选项”,进入“打印”选项卡,选中“仅打印窗体域内容”复选项,点击“确定”按钮并保存该模板。这样一来,凡是使用该模板创建的表单,在默认的打印状态下,都会仅打印窗体域中的内容。

参考:

https://docs.microsoft.com/zh-cn/office/vba/api/word.fieldshttp://www.exceloffice.net/archives/1687

-End-

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月1日 下午12:00
下一篇 2024年5月1日 下午12:12

相关推荐