Trích xuất dữ liệu từ nhiều file khác nhau vào file tổng hợp (1 người xem)

  • Thread starter Thread starter kulyvn
  • Ngày gửi Ngày gửi

Người dùng đang xem chủ đề này

kulyvn

Thành viên thường trực
Tham gia
3/8/11
Bài viết
283
Được thích
4
Làm sao để trích xuất dữ liệu từ các file "Mau thong ke 1.xls" đến "Mau thong ke 10.xls" vào file "Mau thong ke tong hop.xls" , nhưng không copy các hàng trống không có dữ liệu. Sau đó sắp xếp dữ liệu theo ngày tháng năm từ nhỏ đến lớn và cột số từ nhỏ đến lớn.
 

File đính kèm

Lần chỉnh sửa cuối:
Làm sao để trích xuất dữ liệu từ các file "Mau thong ke 1.xls" đến "Mau thong ke 10.xls" vào file "Mau thong ke tong hop.xls" , nhưng không copy các hàng trống không có dữ liệu. Sau đó sắp xếp dữ liệu theo ngày tháng năm từ nhỏ đến lớn và cột số từ nhỏ đến lớn.

1. Tôi không có "gan" tải hết 10 file mẫu của bạn.
2. Tôi không biết ADO để lấy dữ liệu trong file đang đóng.
Vì vậy, tôi tạo 1 vùng 10 dòng trong sheet GPE, cho bạn nhập tên các file cần lấy dữ liệu về file TongHop.xls
10 file này và file Tonghop phải nằm chung 1 folder.
 

File đính kèm

1. Tôi không có "gan" tải hết 10 file mẫu của bạn.
2. Tôi không biết ADO để lấy dữ liệu trong file đang đóng.
Vì vậy, tôi tạo 1 vùng 10 dòng trong sheet GPE, cho bạn nhập tên các file cần lấy dữ liệu về file TongHop.xls
10 file này và file Tonghop phải nằm chung 1 folder.
Dù chưa trọn vẹn lắm nhưng vẫn cám ơn bạn nhiều nhé
 
Làm sao để trích xuất dữ liệu từ các file "Mau thong ke 1.xls" đến "Mau thong ke 10.xls" vào file "Mau thong ke tong hop.xls" , nhưng không copy các hàng trống không có dữ liệu. Sau đó sắp xếp dữ liệu theo ngày tháng năm từ nhỏ đến lớn và cột số từ nhỏ đến lớn.
Lâu lắm rồi mình ko code két quên hết tiêu....tham khảo code từ GPE quậy một tẹo cho đỡ quên...
bạn tham khảo thêm ....tất cà các file cần tổng hợp phải trong 1 Folder
Mã:
Function ListFileName(ByVal strPath As String, sArr())
    Dim ObjFile As Object, x As Long
    With CreateObject("Scripting.FileSystemObject")
       For Each ObjFile In .GetFolder(strPath).Files
          If .GetExtensionName(ObjFile) Like "xls*" Then
             If Left(ObjFile.Name, 2) <> "~$" Then
                If ObjFile.Name <> ThisWorkbook.Name Then
                   x = x + 1
                   ReDim Preserve sArr(1 To x)
                   sArr(x) = ObjFile
                End If
             End If
          End If
       Next
    End With
End Function


Public Sub TongHopFiles(ByVal sFile As String)
Application.ScreenUpdating = False
    Dim x As Long, k As Long, i As Long, j As Long
    Dim Kq(1 To 65536, 1 To 100), Arr(), sArr(), Sh As Worksheet
    ListFileName sFile, sArr
    For x = 1 To UBound(sArr)
        With Workbooks.Open(sArr(x))
            For Each Sh In .Worksheets
                With Sheets("THA")
                    Arr = Sh.Range("A10", Sh.[A65536].End(3)).Resize(, 100).Value
                End With
                For i = 1 To UBound(Arr, 1)
                    If Len(Arr(i, 2)) > 1 Then
                       k = k + 1
                       Kq(k, 1) = k
                       For j = 2 To UBound(Arr, 2)
                          Kq(k, j) = Arr(i, j)
                       Next
                    End If
                Next
            Next
            .Close False
        End With
        With Sheet1.Range("A10")
             .Resize(k * 10, UBound(Arr, 2)).ClearContents
             .Resize(k, UBound(Arr, 2)) = Kq
        End With
    Next
Application.ScreenUpdating = True
End Sub

Chạy cái này....


Public Sub Main()
    Dim Path As String
    Path = ThisWorkbook.Path
    TongHopFiles Path
End Sub
 
Lần chỉnh sửa cuối:
Lâu lắm rồi mình ko code két quên hết tiêu....tham khảo code từ GPE quậy một tẹo cho đỡ quên...
bạn tham khảo thêm ....tất cà các file cần tổng hợp phải trong 1 Folder
cho hỏi lệnh
If Left(ObjFile.Name, 2) <> "~$" Then ...
có ý nghĩa như thế nào, thấy các bạn sử dung nhưng không biết tác dụng của nó
 
cho hỏi lệnh
If Left(ObjFile.Name, 2) <> "~$" Then ...
có ý nghĩa như thế nào, thấy các bạn sử dung nhưng không biết tác dụng của nó
là cái File ở chế độ ẩn do Bác Bill tạo ra... mình tạm keo nó là Files Tạm ~$tenFile.xls
 
không có đồng chí nào từ bỏ lệnh

Mã:
[COLOR=#000000]Workbooks.Open[/COLOR]

à ? hi hi .
 
có cách nào không dùng Workbooks.Open để lấy dữ liệu không bạn, cám ơn
nếu ko sử dụng chữ to màu đò ta có thể xài ADO ....nhưng lúc nào cũng ADO hoài xưa như trái đất ... mất hứng..
ta chơi cái khác đi ... ko sử dụng ADO và chữ To màu đó...
 
Lâu lắm rồi mình ko code két quên hết tiêu....tham khảo code từ GPE quậy một tẹo cho đỡ quên...
bạn tham khảo thêm ....tất cà các file cần tổng hợp phải trong 1 Folder
Mã:
Function ListFileName(ByVal strPath As String, sArr())
    Dim ObjFile As Object, x As Long
    With CreateObject("Scripting.FileSystemObject")
       For Each ObjFile In .GetFolder(strPath).Files
          If .GetExtensionName(ObjFile) Like "xls*" Then
             If Left(ObjFile.Name, 2) <> "~$" Then
                If ObjFile.Name <> ThisWorkbook.Name Then
                   x = x + 1
                   ReDim Preserve sArr(1 To x)
                   sArr(x) = ObjFile
                End If
             End If
          End If
       Next
    End With
End Function


Public Sub TongHopFiles(ByVal sFile As String)
Application.ScreenUpdating = False
    Dim x As Long, k As Long, i As Long, j As Long
    Dim Kq(1 To 65536, 1 To 100), Arr(), sArr(), Sh As Worksheet
    ListFileName sFile, sArr
    For x = 1 To UBound(sArr)
        With Workbooks.Open(sArr(x))
            For Each Sh In .Worksheets
                With Sheets("THA")
                    Arr = Sh.Range("A10", Sh.[A65536].End(3)).Resize(, 100).Value
                End With
                For i = 1 To UBound(Arr, 1)
                    If Len(Arr(i, 2)) > 1 Then
                       k = k + 1
                       Kq(k, 1) = k
                       For j = 2 To UBound(Arr, 2)
                          Kq(k, j) = Arr(i, j)
                       Next
                    End If
                Next
            Next
            .Close False
        End With
        With Sheet1.Range("A10")
             .Resize(k * 10, UBound(Arr, 2)).ClearContents
             .Resize(k, UBound(Arr, 2)) = Kq
        End With
    Next
Application.ScreenUpdating = True
End Sub

Chạy cái này....


Public Sub Main()
    Dim Path As String
    Path = ThisWorkbook.Path
    TongHopFiles Path
End Sub
Tất cả code này trong 1 macro hay sao bạn. bạn có thể hướng dẫn cụ thể hơn được không. thank bạn
 
Code này chỉ chạy giới hạn tối đa 10 file thôi hả a
1. Tôi không có "gan" tải hết 10 file mẫu của bạn.
2. Tôi không biết ADO để lấy dữ liệu trong file đang đóng.
Vì vậy, tôi tạo 1 vùng 10 dòng trong sheet GPE, cho bạn nhập tên các file cần lấy dữ liệu về file TongHop.xls
10 file này và file Tonghop phải nằm chung 1 folder.
 

Bài viết mới nhất

Back
Top Bottom