论文部分内容阅读
张老师是学校的档案管理员,每年都要采集许多学生和教职工的基本数据。下发电子表格让大家填,可收集上来的表格还得一个项目一个项目地复制再汇总,工作量也很大。由于发放和收集的电子表格都是一样的格式,张老师想用电脑自动完成这些电子表格的汇总。
样表的制作和收集
样表的制作比较简单,只需把要采集的数据项目制作成表格(图1),删除无用的工作表,必要时可以设置只允许用户编辑的数据区域(可通过依次单击“工具”菜单中的“保护”,选择“允许用户编辑区域”命令来实现),以及在某些项目中设置数据的有效性以保证数据采集的便捷性和数据结果的准确性(可通过“数据”菜单中的“有效性”命令来实现)。
将电子表格文件“信息采集样表.xls”保存后放在FTP服务器上供教职工下载。完成表格的填写后只需将工作簿改为自己的名字,并在规定的时间内上传到FTP指定的文件夹中就可以了。负责汇总的老师把该文件夹下载到本地后即完成了电子表格文档的收集。
汇总数据表格到同一工作簿中
如果想把所有教工填写的电子表格汇总到一个工作簿中,可以用下面的操作来实现。
设置引用的VBA程序库
打开空白工作簿“信息采集样表”,按Alt+F11快捷键打开VBE编辑器。由于程序在执行过程中要调用“文件夹选择对话框”,所以首先要设置程序的运行环境和引用的VBA程序库(VBA程序库中存储了一些常用功能所对应的VBA代码,给用户编程带来了方便)。
方法是:单击“工具”菜单中的“引用”命令,在弹出的“引用”对话框中选中“可使用的引用”列表中的Microsoft Scripting Runtime和Microsoft Scripting Library两个VBA程序库,确定即可。
编写程序代码
插入一个模块,在模块中定义一个名为ins_sheet( )的过程,编写代码。用GetPatch( )函数获取下载的xls文件的路径,然后遍历指定该文件夹中的每个类型为“Excel工作表”的文档,同时调用MyCopy( )过程将其复制并汇总到“信息采集样表”工作簿中。GetPatch( )函数和MyCopy( )过程均为用户在模块中定义的,具体代码请到http://blog.sina.com.cn/s/blog_78d89c480101a0wl.html下载。
汇总所有表格到同一工作簿中
接下来使用“窗体”工具栏的“按钮”工具在“样表”工作表中绘制一个按钮控件,修改按钮上的文本为“合并工作表”,并将定义的ins_sheet( )过程指定给该按钮。单击“合并工作表”按钮就可以看到所有教工填写的表格都自动汇总到同一工作簿中了,工作表使用教职工的姓名来命名(图2)。
汇总数据表格到同一工作表中
如果能把所有的电子表格数据汇总到同一工作表中,那样查找某些教职工的信息就更方便了,同时也更加便于数据的分析和打印。实现的方法是:在工作簿的最前面插入一张空白的工作表,取名为“合并为记录”,设计需要汇总的项目名称,在“模块1”中定义一个名为hbjl( )的过程并将其指定给该工作表的一个自定义的按钮控件,代码可直接在上面提到的地址中下载,运行后就可以看到表格中的所有数据都被以记录的方式合并到同一个工作表中去了(图3)。
需要注意的是,如果单位教职工人数超过了工作簿允许的最大工作表数,会导致工作表创建失败的错误出现,变通的解决方案是将教工数据合并到几个不同的工作簿中,或者是只将教工数据以记录的方式合并到同一工作表中即可。各位读者朋友可自行尝试代码整合的方法。
样表的制作和收集
样表的制作比较简单,只需把要采集的数据项目制作成表格(图1),删除无用的工作表,必要时可以设置只允许用户编辑的数据区域(可通过依次单击“工具”菜单中的“保护”,选择“允许用户编辑区域”命令来实现),以及在某些项目中设置数据的有效性以保证数据采集的便捷性和数据结果的准确性(可通过“数据”菜单中的“有效性”命令来实现)。
将电子表格文件“信息采集样表.xls”保存后放在FTP服务器上供教职工下载。完成表格的填写后只需将工作簿改为自己的名字,并在规定的时间内上传到FTP指定的文件夹中就可以了。负责汇总的老师把该文件夹下载到本地后即完成了电子表格文档的收集。
汇总数据表格到同一工作簿中
如果想把所有教工填写的电子表格汇总到一个工作簿中,可以用下面的操作来实现。
设置引用的VBA程序库
打开空白工作簿“信息采集样表”,按Alt+F11快捷键打开VBE编辑器。由于程序在执行过程中要调用“文件夹选择对话框”,所以首先要设置程序的运行环境和引用的VBA程序库(VBA程序库中存储了一些常用功能所对应的VBA代码,给用户编程带来了方便)。
方法是:单击“工具”菜单中的“引用”命令,在弹出的“引用”对话框中选中“可使用的引用”列表中的Microsoft Scripting Runtime和Microsoft Scripting Library两个VBA程序库,确定即可。
编写程序代码
插入一个模块,在模块中定义一个名为ins_sheet( )的过程,编写代码。用GetPatch( )函数获取下载的xls文件的路径,然后遍历指定该文件夹中的每个类型为“Excel工作表”的文档,同时调用MyCopy( )过程将其复制并汇总到“信息采集样表”工作簿中。GetPatch( )函数和MyCopy( )过程均为用户在模块中定义的,具体代码请到http://blog.sina.com.cn/s/blog_78d89c480101a0wl.html下载。
汇总所有表格到同一工作簿中
接下来使用“窗体”工具栏的“按钮”工具在“样表”工作表中绘制一个按钮控件,修改按钮上的文本为“合并工作表”,并将定义的ins_sheet( )过程指定给该按钮。单击“合并工作表”按钮就可以看到所有教工填写的表格都自动汇总到同一工作簿中了,工作表使用教职工的姓名来命名(图2)。
汇总数据表格到同一工作表中
如果能把所有的电子表格数据汇总到同一工作表中,那样查找某些教职工的信息就更方便了,同时也更加便于数据的分析和打印。实现的方法是:在工作簿的最前面插入一张空白的工作表,取名为“合并为记录”,设计需要汇总的项目名称,在“模块1”中定义一个名为hbjl( )的过程并将其指定给该工作表的一个自定义的按钮控件,代码可直接在上面提到的地址中下载,运行后就可以看到表格中的所有数据都被以记录的方式合并到同一个工作表中去了(图3)。
需要注意的是,如果单位教职工人数超过了工作簿允许的最大工作表数,会导致工作表创建失败的错误出现,变通的解决方案是将教工数据合并到几个不同的工作簿中,或者是只将教工数据以记录的方式合并到同一工作表中即可。各位读者朋友可自行尝试代码整合的方法。