多表汇总第2集:Word VBA汇总多表通用技巧

拥梦者 原创  于2016年12月19日23:00

开场白

年终到了,各位小伙伴们一定都有很多数据要统计或汇总,第1集讲解了利用Word多作者修订合并的方法汇总多表。但是那个方法只适用于分表复杂,但是分表数量少的情况。如果分表很多,再使用那个方法就很繁琐了。今天我们就展示一个56个分表的汇总通用技巧。为了增强通用性,效率就只能打一个折扣了,哪怕你从来都没有接触过Word VBA也能按步骤操作实现汇总结果。试试吧!

注:本演示操作为Office2010版本。其它的版本自行参考。

Word VBA汇总多表通用技巧

下面,我仍然是模拟一个班的成绩表汇总。56个学生,每个学生的成绩都保存在一个文档中,现在要求汇总为全班的成绩总表。

图1.在资源管理器中展示56个分表
图2.展示一个学生成绩分表的结构

这么多表,应该怎样才能迅速汇总呢?……


图3.制作总表
图4.总表的关键是要使用开发工具,如果没有这个选项请接着看,有这个工具请跳到图7继续
图5.找出开发工具的设置方法
图6.找出开发工具的设置方法,这步确定后就能找到了。
图7.点击启动VBA编辑器
图8.在VBA编辑器中插入模块

下面这段代码是整个汇总的核心部分,首先展示一下全貌效果:


图9.VBA代码展示

下面是VBA代码文字版,请复制后粘贴到你自己的总表VBA模块中:


Sub 合并各分表数据到总表()

Dim a, d, i, str, myDoc As Document ' 创建一些变量。

Application.ScreenUpdating = False  '关闭屏幕更新

str = Dir(ThisDocument.Path & "\*.docx")    '在当前路径下搜索扩展名为 docx 的文档,这个地方可以根据自己需要替换

Do While Len(str) <> 0

i = i + 1

Set myDoc = Application.Documents.Open(Chr(34) & ThisDocument.Path & "\" & str) '打开搜索到的文档

For j = 1 To myDoc.Tables(1).Rows.Count '建立表格的行数的循环

For k = 1 To myDoc.Tables(1).Columns.Count  '建立表格列数的循环

If Asc(myDoc.Tables(1).Cell(j, k).Range.Text) <> 13 Then    '判断单元格如果不只是回车键就进行赋值操作

ThisDocument.Tables(1).Cell(j, k).Range.Text = VBA.Replace(myDoc.Tables(1).Cell(j, k).Range.Text, Chr(13), "")  '将非空单元格依次粘贴到总表对应的单元格中

End If

Next

Next

myDoc.Close '关闭搜索到的文档

str = Dir

Loop

Application.ScreenUpdating = True  '启用屏幕更新

End Sub


这个二维码应该也就是代码吧,也可以扫一下

图10.将上面的代码粘贴到模块中并保存

图11.如果宏无法运行,请检查宏安全性设置
图12.宏安全性设置

到这里,就准备开工了,请检查一下你的茶泡好没。


图13.一切就绪,准备开始自动汇总
图14.点击运行就正式启动汇总了,喝茶去吧,等待结果中……
图15.汇总结果展示
图16.再来一个特写镜头,如有兴趣的朋友可以比对一下分表与这里是否吻合。

老规矩,对操作步骤没看明白的可以看下面的动画演示:


图17.动画演示操作全过程


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容