การรวมข้อมูลจากหลายไฟล์ด้วย VBA

📝 งานที่สำคัญอย่างหนึ่งสำหรับการทำรายงานคือการรวมข้อมูลจากหลาย ๆ ไฟล์ งานลักษณะนี้เกิดจากการที่องค์กรมีหน่วยงานอยู่หลายสาขาหรือหลายหน่วยงานแล้วจำเป็นต้องนำข้อมูลมารวมกันเพื่อทำรายงาน หากเป็นการรวมข้อมูลจากหลาย ๆ ไฟล์ด้วยมือนั้นเป็นการสิ้นเปลืองเวลาไปอย่างมากเพื่อให้ได้ข้อมูลครบถ้วน 🎯

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

Video แสดงการรวมข้อมูลจากหลายไฟล์ หลายชีต มาไว้ในชีตเดียว

Scroll to Top