杨 建
(广西柳工机械股份有限公司,广西 柳州545007)
在无纸化办公中,利用表单制作调查问卷、电子考卷等,通过表单收集问卷、答案数据以便处理。目前制作表单的软件有Microsoft InfoPath Designer、Adobe LiveCycle Designer等软件,填写这些表单需要使用相应的软件,而在一般的计算机中缺乏安装相应的软件,使填写表单成为困难。Microsoft Word作为最常用的办公软件在每台计算机上基本都有安装,其强大的功能可以容易构建、填写表单,结合VBA、Excel对表单数据进行收集,很方便快捷。本文通过实例详细讲解Word表单的构建和数据收集方法,让读者可以通过常见的办公软件轻松制作出专业的调查问卷、电子考卷等,并能方便快捷地回收数据,以实现无纸化办公、减少错误、提高工作效率。
在Word的环境下构建表单要用到内容控件,要求Word为2007及以上版本。下文以Word 2013为说明如何构建表单,其它Word版本的操作类同。
单击Word功能区“文件”选项卡,然后单击“选项”,打开“Word选项”窗口。点击窗口左则“自定义功能区”项,然后在窗口右则“自定义功能区”下的组合框中选择“主选项卡”,在下面的“主选项卡”列表中勾选“开发工具”项,点击“确定”。Word功能区出现“开发工具”选项卡,如图1所示。
图1 “开发工具”选项卡
如图2所示框内为构建表单的内容控件组。内容控件不同于旧式窗体控件和ActiveX控件。
图2 内容控件组
2.2.1 格式文本内容控件
格式文本内容控件位于内容控件组中的第1行第1列,其可以输入文本、表格、图片等对象,并能对其中的对象进行格式化设置。
在文档中把光标定位到需要插入内容控件的位置,点击“格式文本内容控件”,格式文本内容控件插入到光标所在位置。
选中文档中的格式文本内容控件,点击“开发工具”选项卡上的“属性”按钮,打开内容控件属性窗口,如图3所示。
图3 格式文本内容控件属性窗口
“标题”是控件标题栏显示的内容。“标记”是控件的“Tag”标签属性。“显示为”设置控件在文档中的显示样式。“颜色”设置控件显示样式的颜色。“使用样式设置键入空控件中的文本格式”设置控件中的对象的共性格式。勾选“内容被编辑后删除内容控件”后,当控件中的对象被编辑时内容控件会自动删除。勾选“无法删除内容控件”后,内容控件不能删除,但其中的对象能编辑。勾选“无法编辑内容”后,内容控件中的对象不能编辑,但整个内容控件能删除。
2.2.2 组合框内容控件
组合框内容控件位于内容控件组中的第2行第2列。组合框内容控件可以输入或从下拉选项中选择文本。组合框内容控件通常用于单选项。组合框内容控件属性窗口如图4所示。
图4 组合框内容控件属性窗口
单击“添加”按钮可以添加下拉列表选项,如图5。其中“显示名称”是下拉列表显示的文本,“值”是下拉列表显示名称对应的“Value”属性值。
图5 下拉列表添加选项窗口
通过“修改”、“删除”等按钮可以对下拉列表的选项进行编辑。
其它属性的设置与格式文本内容控件属性设置相同。
2.2.3 其它内容控件
其它内容控件使用方法、属性设置与上述两个内容控件基本相同,这里不再阐述。
以图6的表单为例说明表单制作过程。
图6 表单实例
先制作表格,在需要填表人填写的地方插入内容控件。“单位”、“联系人”、“联系电话”、“联系地址”、“需求数量”、“填表人”使用纯文本内容控件,“产品配置”使用格式文本内容控件,“需求产品型号”使用组合框内容控件,“交货日期”、“填表日期”使用日期选取器内容控件,“是否特殊订单”使用复选框内容控件。
点击“开发工具”选项卡的“设计模式”命令按钮,进入设计模式。在内容控件开始/结束标记之间编辑输入内容提示,如图7所示。编辑完成后再点击“设计模式”命令按钮,退出设计模式。
图7 编辑输入内容提示
表单作好后,还对它进行保护设置,其目的是保护非填写部分不被修改,填表人只能填写、编辑内容控件中的对象[1]。
点击“开发工具”选项卡的“限制编辑”命令按钮,在“限制编辑”窗中,如图8所示,勾选“仅允许在文档中进行此类型的编辑”,在下面的组合框中选取“填写窗体”,点击“是,启动强制保护”按钮,在弹出的“保护方法”对话框中可以设置保护密码,密码留空时为无密码保护。点击“确定”按钮,完成表单保护设置。
图8 限制编辑窗
把表单的数据导入Excel工作表中,利用Excel的强大功能可对数据进行处理。把数据导入Excel工作表的方法是使用VBA宏代码。
打开Excel,添加“开发工具”选项卡。点击“开发工具”选项卡的“Visual Basic”命令按钮,进入宏代码编写界面。
点击宏代码编写界面的“插入”菜单,点击“模块”,插入一个模块。在该模块的宏代码编辑窗口输入下面的代码。
Sub读取数据()
Dim i As Integer
Dim j As Integer
Dim R As Integer
Dim WdocName As String
Dim WdocFolder As String
‘打开对话框,选择表单所在的文件夹:
With_
Application.FileDialog (msoFileDialogFolderPicker)‘打开对话框,选择表单所在的文件夹
If.Show=True Then
WdocFolder=.SelectedItems(1)
End If
End With
If WdocFolder=""Then Exit Sub
'打开表单读取数据:
Dim WordAppl As Word.Application
Dim Wdoc As Document
Dim FileTryp As Variant
FileTryp=Array("docx","docm")‘设置表单文档的两种文件类型
On Error Resume Next
Set WordAppl=GetObject(,"Word.Application") '获取Word对象
WordAppl.Visible=False
If Err.Number<>0 Then'如果进程没有Word对象,则创建Word对象
Set WordAppl= CreateObject("Word.Application") '创建Word对象
我这样孜孜不倦地寻找白丽筠,一年后传来了一个比较靠谱的消息。有人说,在广东东莞见到了白丽筠。听到这个消息,我马上就去了那座城市。为了找到白丽筠,我必须寻遍花街柳巷,深入一家家娱乐会所。我没有钱,穿戴寒酸,人瘦毛长,脸颊都凹陷下去了。这副形象自然不受欢迎。
End If
For i=0 To UBound(FileTryp)'每种文件类型读取一次
WdocName=Dir(WdocFolder&"*."&FileTryp(i))'获得文件夹下的第一个文档文件名
Do While WdocName<>""
If WdocName=""Then Exit Do
Set Wdoc=WordAppl.Documents.Open(Wdoc-Folder&""&WdocName) '读取文件夹下的所有表单文档
'向Excel表导入数据:
R=Range("A"&Rows.Count).End(xlUp).Row+1
For j=1 To Wdoc.ContentControls.Count
If R=2 Then Cells(R-1,j)=Wdoc.Content-Controls(j).Title
Cells (R,j) =Wdoc.ContentControls(j).Range.Text
Next j
Wdoc.Close
WdocName=Dir()'移到下一个表单
Loop
Next i
WordAppl.Quit
End Sub
点击“工具”菜单,点击“引用”,打开“引用”窗口。在“可使用的引用”列表中勾选“Microsoft Word 15.0 Object Lybrary”项[2]。
运行“读取数据”宏代码,选择表单所在的文件夹,该文件夹下的所有表单数据就逐行导入到Excel表中,如图9所示。
图9 从W ord表单导入的数据
通过Word、VBA、Excel的结合,使表单的构建、填写、数据的收集及分析变得更加便利,容易在无纸化办公进行推广。