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

Van_h

Thành viên mới
Tham gia ngày
13 Tháng tư 2019
Bài viết
7
Được thích
0
Điểm
13
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

Van_h

Thành viên mới
Tham gia ngày
13 Tháng tư 2019
Bài viết
7
Được thích
0
Điểm
13
Các bạn GPE dành cho mình ít thời gian nhe. Cảm ơn!
 

Hai Lúa Miền Tây

Chuyên gia GPE
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,292
Được thích
14,084
Điểm
1,910
Nơi ở
Tp.HCM
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
 

Van_h

Thành viên mới
Tham gia ngày
13 Tháng tư 2019
Bài viết
7
Được thích
0
Điểm
13
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.
 

Hai Lúa Miền Tây

Chuyên gia GPE
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,292
Được thích
14,084
Điểm
1,910
Nơi ở
Tp.HCM
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
 

Hai Lúa Miền Tây

Chuyên gia GPE
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,292
Được thích
14,084
Điểm
1,910
Nơi ở
Tp.HCM
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.
 

Van_h

Thành viên mới
Tham gia ngày
13 Tháng tư 2019
Bài viết
7
Được thích
0
Điểm
13
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 ... ;)
 
Top