Nhờ giúp gom sheet tên TOTAL từ các file vào 1 file mới.

Liên hệ QC

Van_h

Thành viên mới
Tham gia
13/4/19
Bài viết
7
Được thích
0
Giới tính
Nam
Xin chào các bạn, mình có vấn đề cần các bạn xem qua và code giúp

Các file có số lượng sheet khác nhau nhưng có 1 sheet tên TOTAL mình cần lấy giá trị của sheet này ra một file mới, tất cả các sheet trên các file đều có pass 1234.

mình gửi vài file mẫu, nhờ các bạn giúp dùm. Chân thành cảm ơn.
 

File đính kèm

  • DATA.rar
    228.1 KB · Đọc: 14
Các bạn GPE dành cho mình ít thời gian nhe. Thanks!
 
Upvote 0
Xin chào các bạn, mình có vấn đề cần các bạn xem qua và code giúp

Các file có số lượng sheet khác nhau nhưng có 1 sheet tên TOTAL mình cần lấy giá trị của sheet này ra một file mới, tất cả các sheet trên các file đều có pass 1234.

mình gửi vài file mẫu, nhờ các bạn giúp dùm. Chân thành cảm ơn.
Bạn dùng code sau thử nhé:

Mã:
Sub LayDuLieu()
    Dim strSQL As String
    Dim arrFile As Variant
    arrFile = Array("DL PGK.xlsx", "DN PGK.xlsx", "PNL PGK.xlsx")
    For i = 0 To 2
        strSQL = strSQL & " Union all select * from [EXCEL 12.0;Database=" & ThisWorkbook.Path & "\" & arrFile(i) & "].[TOTAL$] where TAU is not null"
    Next
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 12.0"
        Sheet1.Range("A2").CopyFromRecordset .Execute(Right(strSQL, Len(strSQL) - 11))
    End With
    
End Sub
 
Upvote 0
Thanks admin nhiều, code lấy dữ liệu đúng như mong đợi. Mình thêm file và tăng số vòng lặp lên tương ứng nhưng khoản 310 file trong tháng mà đưa các tên file cụ thể thế này hơi bất tiện. Mong admin giúp code, cho phép mình chủ động chọn số file cần lấy dữ liệu nhe.

Xin cảm ơn.
 
Upvote 0
Cảm ơn admin nhiều, code lấy dữ liệu đúng như mong đợi. Mình thêm file và tăng số vòng lặp lên tương ứng nhưng khoản 310 file trong tháng mà đưa các tên file cụ thể thế này hơi bất tiện. Mong admin giúp code, cho phép mình chủ động chọn số file cần lấy dữ liệu nhe.

Xin cảm ơn.
Bạn dùng code bên dưới nhé.

Mã:
Sub GopDL_HLMT()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    Dim vrtFiles As Variant
    If fd.Show = -1 Then
        For Each vrtFiles In fd.SelectedItems
            With CreateObject("ADODB.Connection")
                .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & vrtFiles & ";Extended Properties=Excel 12.0"
                Sheet1.Range("A" & Sheet1.Range("A65000").End(xlUp).Row + 1).CopyFromRecordset .Execute("select * from [TOTAL$] where TAU is not null")
            End With
        Next
    End If
End Sub
 
Upvote 0
dạ vâng, theo em hiểu câu lệnh này sẽ lấy dữ liệu tại các sheet "TOTAL" có đúng không ạ,
nếu đúng vậy thì từ "TAU" có ý nghĩa gì trong đó ạ?
TOTAL là tên sheet, TAU là tên cột trong sheet, điều kiện lấy là sẽ lấy cột TAU là dòng không trống.
 
Upvote 0
Bạn dùng code bên dưới nhé.

Mã:
Sub GopDL_HLMT()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    Dim vrtFiles As Variant
    If fd.Show = -1 Then
        For Each vrtFiles In fd.SelectedItems
            With CreateObject("ADODB.Connection")
                .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & vrtFiles & ";Extended Properties=Excel 12.0"
                Sheet1.Range("A" & Sheet1.Range("A65000").End(xlUp).Row + 1).CopyFromRecordset .Execute("select * from [TOTAL$] where TAU is not null")
            End With
        Next
    End If
End Sub

Xin lỗi phản hồi hơi chậm.

Cảm ơn admin rất nhiều, chọn file và lấy data như mong đợi ... ;)
 
Upvote 0
Web KT
Back
Top Bottom