拥梦者 原创 于2016年12月19日23:00
开场白
年终到了,各位小伙伴们一定都有很多数据要统计或汇总,第1集讲解了利用Word多作者修订合并的方法汇总多表。但是那个方法只适用于分表复杂,但是分表数量少的情况。如果分表很多,再使用那个方法就很繁琐了。今天我们就展示一个56个分表的汇总通用技巧。为了增强通用性,效率就只能打一个折扣了,哪怕你从来都没有接触过Word VBA也能按步骤操作实现汇总结果。试试吧!
注:本演示操作为Office2010版本。其它的版本自行参考。
Word VBA汇总多表通用技巧
下面,我仍然是模拟一个班的成绩表汇总。56个学生,每个学生的成绩都保存在一个文档中,现在要求汇总为全班的成绩总表。
这么多表,应该怎样才能迅速汇总呢?……
下面这段代码是整个汇总的核心部分,首先展示一下全貌效果:
下面是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.将上面的代码粘贴到模块中并保存