📝 งานที่สำคัญอย่างหนึ่งสำหรับการทำรายงานคือการรวมข้อมูลจากหลาย ๆ ไฟล์ งานลักษณะนี้เกิดจากการที่องค์กรมีหน่วยงานอยู่หลายสาขาหรือหลายหน่วยงานแล้วจำเป็นต้องนำข้อมูลมารวมกันเพื่อทำรายงาน หากเป็นการรวมข้อมูลจากหลาย ๆ ไฟล์ด้วยมือนั้นเป็นการสิ้นเปลืองเวลาไปอย่างมากเพื่อให้ได้ข้อมูลครบถ้วน 🎯
Video ด้านล่างนี้เป็นการนำ VBA เข้ามาช่วยสำหรับการรวมข้อมูลจากหลายไฟล์ หลายชีต มาไว้ในชีตใดชีตหนึ่งด้วยความถูกต้อง รวดเร็ว เพื่อลดเวลาในการรวบรวมข้อมูล สามารถรวมซ้ำได้หากพบว่ามีข้อมูลเข้ามาใหม่ ซึ่งจะทำการลบข้อมูลเดิมทิ้งก่อนแล้ววางด้วยข้อมูลใหม่ จะลดเวลาในการรวมข้อมูลได้อย่างมหาศาล เหมาะสำหรับผู้ใช้งานที่มีความรู้เกี่ยวกับ VBA ที่จะสามารถแก้ไข ปรับปรุง เปลี่ยนแปลง เพิ่มเติมเพื่อขยายความสามารถของโปรแกรมให้ครอบคลุมงานที่ตนเองรับผิดชอบได้ โดยมีตัวอย่าง Code ตามด้านล่างครับ ⤵
Sub CollectDataFromMultipleFiles()
Dim wb As Workbook, s As Worksheet, db As Worksheet
Dim strPath As Variant, i As Integer, f As Byte
strPath = Application.GetOpenFilename( _
FileFilter:="Excel File (*.xls*),*.xls*", _
MultiSelect:=True)
If TypeName(strPath) = "Boolean" Then Exit Sub
Set db = ThisWorkbook.Sheets(1)
db.UsedRange.ClearContents
Application.ScreenUpdating = False
For i = 1 To UBound(strPath)
For Each s In wb.Worksheets
f = IIf(db.Range("a1").Value = "", 1, 0)
If s.Range("a1").Value <> "" Then
s.UsedRange.Offset(f, 0).Copy
With db
.Range("a" & .Rows.Count).End(xlUp).Offset(f, 0) _
.PasteSpecial xlPasteValues
End With
End If
Next s
wb.Close
Application.CutCopyMode = False
Next i
Application.ScreenUpdating = True
MsgBox "Finished", vbInformation
End Sub