擁夢者 原創(chuàng)? 于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 ' 創(chuàng)建一些變量。
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 '建立表格的行數的循環(huán)
For k = 1 To myDoc.Tables(1).Columns.Count? '建立表格列數的循環(huán)
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.將上面的代碼粘貼到模塊中并保存