Tổng hợp dữ liệu từ nhiều file ở nhiều thư mục khác nhau về 1file tổng

Liên hệ QC

LuuGiaPhúc

Thành viên hoạt động
Tham gia
28/7/21
Bài viết
126
Được thích
47
Em nhờ các anh chị viết dùm e đoạn code để lấy dữ liệu từ nhiều file, mỗi file nằm ở 1 thư mục khác nhau (nhưng tất cà các thư mục này đều nằm trong 1 thư mục tổng
Hằng tháng, em tạo ra 1 thư mục tổng, ví dụ tháng này là T8.2021 và lưu nó lên trên ổ mạng chia sẻ cho các văn phòng trên toàn quốc cùng vào nhập dữ liệu.
Mỗi văn phòng sẽ tự tạo 1 thư mục con (ví dụ DBN1 , BHO1 ...) nằm trong thư mục tổng này. Trong thư mục tổng, em để sẵn 1 template PHIEU YEU CAU HKM - MUC - GIAY IN.xlsx.
Các văn phòng sẽ dùng file template này để nhập yêu cầu cung cấp văn phòng phẩm như giấy in, mực in, hàng khuyến mãi... mà văn phòng của họ cần sử dụng trong tháng.
Sau đó, em dùng file tổng hợp để tổng hợp số lượng, mã hàng , loại hàng.... của tất cả lại và đặt hàng.

Vấn đề là có khoảng 50 văn phòng như thế, nên quá trình tổng hợp bằng tay rất mất thời gian. Nhờ các anh chị viết dùm 1 đoạn code để mình nhấn nút import, chỉ đường dẫn đến thư mục T8.2021 thì nó sẽ tự động mở từng thư mục con, tìm đến file PHIEU YEU CAU HKM - MUC - GIAY IN.xlsx trong thư mục đó, copy sheet MUC - GIAY IN , paste value vào sheet MUC - GIAY IN của file tổng hợp. Lưu ý : nhìn tên thư mục để copy. Ví dụ : vào thư mục BHO1, copy thì phải paste vào phần VP BHO1 tương ứng.
Sheet PYC HKM cũng tương tự như vậy

1628389247103.png
1628388842791.png
1628389103079.png
 

File đính kèm

  • Thang 08-2021 (1).zip
    1.4 MB · Đọc: 50
  • 3. TONG HOP.xlsm
    19.9 KB · Đọc: 31
Lần chỉnh sửa cuối:
Tiếc là cái laptop có vấn đề. Khắc phục được thì mai tôi làm cho
 
Upvote 0
Tiếc là cái laptop có vấn đề. Khắc phục được thì mai tôi làm cho
Dạ, em cảm ơn. Nhờ a làm giúp, vì e mất rất nhiều thời gian cho công việc này. Mở từng thư mục, rồi mở file trong đó, copy nội dung, paste vào cột văn phòng tương ứng trong file tổng, lặp lại công việc như thế khoảng 50 lần (do cty e có khoảng 50vp trên toàn quốc, e nghĩ nếu có thể dùng code chạy thì sẽ nhanh hơn
 
Upvote 0
Mình có ý kiến như thế này để code đơn giản hơn.
Thay vì dùng code để dò tìm thư mục con để lấy ra các file cần tổng hợp, thì mình lập ra danh sách cách file cần tổng hợp ra 1 sheet trong file tổng hợp trước, rồi sau đó dùng code lấy dữ liệu từ file khác thôi.
Trường hợp bạn làm tay thì bạn lập ra danh sách thì bạn có thể dùng hyperlink để mở file nhanh hơn.
1. Phần lập ra danh sách file con cần tổng hợp thì bạn có thể tìm code lấy ra danh sách các file trong thư mục, nếu bạn biết dùng commandline thì dùng hàm Dir cho nhanh. khỏi phải code VBA
2. Bạn tham khảo các bài viết lấy dữ liệu từ file khác: Thường sẽ là mở file con (file trong danh sách trên) rồi dùng các vòng lặp và so sánh để lấy dữ liệu đưa vào file tổng hợp.
 
Upvote 0
Em nhờ các anh chị viết dùm e đoạn code để lấy dữ liệu từ nhiều file, mỗi file nằm ở 1 thư mục khác nhau (nhưng tất cà các thư mục này đều nằm trong 1 thư mục tổng
Hằng tháng, em tạo ra 1 thư mục tổng, ví dụ tháng này là T8.2021 và lưu nó lên trên ổ mạng chia sẻ cho các văn phòng trên toàn quốc cùng vào nhập dữ liệu.
Mỗi văn phòng sẽ tự tạo 1 thư mục con (ví dụ DBN1 , BHO1 ...) nằm trong thư mục tổng này. Trong thư mục tổng, em để sẵn 1 template PHIEU YEU CAU HKM - MUC - GIAY IN.xlsx.
Các văn phòng sẽ dùng file template này để nhập yêu cầu cung cấp văn phòng phẩm như giấy in, mực in, hàng khuyến mãi... mà văn phòng của họ cần sử dụng trong tháng.
Sau đó, em dùng file tổng hợp để tổng hợp số lượng, mã hàng , loại hàng.... của tất cả lại và đặt hàng.

Vấn đề là có khoảng 50 văn phòng như thế, nên quá trình tổng hợp bằng tay rất mất thời gian. Nhờ các anh chị viết dùm 1 đoạn code để mình nhấn nút import, chỉ đường dẫn đến thư mục T8.2021 thì nó sẽ tự động mở từng thư mục con, tìm đến file PHIEU YEU CAU HKM - MUC - GIAY IN.xlsx trong thư mục đó, copy sheet MUC - GIAY IN , paste value vào sheet MUC - GIAY IN của file tổng hợp. Lưu ý : nhìn tên thư mục để copy. Ví dụ : vào thư mục BHO1, copy thì phải paste vào phần VP BHO1 tương ứng.
Sheet PYC HKM cũng tương tự như vậy

View attachment 263766
View attachment 263764
View attachment 263765

Mình không biết làm bằng những cách cao siêu như : Power table, pivot query, ADO...
nhưng làm bằng VBA thì cũng thấy ra được kết quả, tuy nó chỉ làm theo cách tuần tự Dùng vòng lặp: mở folder mẹ\mở folder con\chon Wb phù hợp\ mở Wb\ quét các Sh\ lấy dữ liệu sh phù hợp đưa vào mảng.. lặp lại vói folder tiếp theo.... đến hết===> gán xuống sh phù hợp.
Mã:
Sub TONGHOPNHUCAU()
MyFolder = "C:\Users\Admin\Downloads\Thang 08-2021"
    Dim fs, f, f1, s, sf, fc, fol, i, k, sWb
    Dim wb As Workbook, Sh As Worksheet
    Dim KQ(), KQ1(), M
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
   

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(MyFolder)
    Set sf = f.SubFolders
            M = Array(1, 2, 5, 6, 7, 8, 11, 12, 13, 14)
    ReDim KQ(1 To 100, 1 To 12) ' UBound(M) + 2)
    ReDim KQ1(1 To 50, 1 To 100)
    'On Error Resume Next
    For Each f1 In sf
        i = i + 1
        s = f1.Name
            KQ(i, 1) = i
            KQ(i, 2) = s
            KQ1(1, i) = s
        MyFolder = "C:\Users\Admin\Downloads\Thang 08-2021\" & s
        Set f = fs.GetFolder(MyFolder)
        Set fc = f.Files
            For Each fol In fc
                sWb = fol.Name
                        If sWb = "PHIEU YEU CAU HKM - MUC - GIAY IN.xlsx" Then
                            Set wb = Workbooks.Open(fol)
                                For Each Sh In wb.Worksheets
                                    If Sh.Name = "MUC - GIAY IN" Then
                                         For k = 0 To UBound(M)
                                                KQ(i, k + 3) = Sh.Cells(13, M(k))
                                         Next k
                                    End If
                                    If Sh.Name = "PYC HKM" Then
                                        For j = 3 To 31
                                                KQ1(j, i) = Sh.Cells(18 + j, 4)
                                        Next j
                                    End If
                               Next Sh
                                wb.Close False
                        End If
            Next fol
    Next
    Sheets("MUC - GIAY IN").[M13].Resize(i, 12) = KQ
    Sheets("PYC HKM").[AD4].Resize(34, i) = KQ1
    Set fs = Nothing: Set sf = Nothing: Set f = Nothing: Set fc = Nothing:
   
Msgbox  " Xong"
   
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
End Sub
Code này dựa trên code lấy tên folder và file của anh Batman
bạn vào Sh TH và nhấn nút để xem kết quả ở các sh

Bản thân kiến thức còn nông cạn, xin được mọi người ghé qua góp ý.
(dòng cả một ngày mói cho ra kết quả đúng là hoa mắt)
 

File đính kèm

  • 3. TONG HOP.xlsm
    32.7 KB · Đọc: 37
Lần chỉnh sửa cuối:
Upvote 0
Vụ này dùng ADO mới nhanh được.
 
Upvote 0
Code này mình sử dụng bao năm nay rất ổn khi cần tổng hợp các sheet chọn từ nhiều file trong folder. Lâu quá rồi không nhớ code của ai trên GPE chia sẻ nữa. Xin phép chia sẻ lại cho người cần dùng. Tại sheet của file cần tổng hợp (nên tạo sheet mới) rồi chạy Sub Main() nhớ thay đổi tham số cho SheetName và RangeAddress cho phù hợp với nhu cầu cần tổng hợp của bạn. Sau khi có sheet được tổng hợp bạn tự xử lý lại dữ liệu cho phù hợp.
Mã:
Function GetData(ByVal FileName As String, ByVal SheetName As String, ByVal RangeAddress As String, _
            ByVal HasTitle As Boolean, ByVal UseTitle As Boolean)
            
  Dim rsCon As Object, rsData As Object, cat As Object, tbl As Object
  Dim tmpArr, Arr()
  Dim szConnect As String, szSQL As String, tmp As String
  Dim lCount As Long, lR As Long, lC As Long, lVer As Long
  lVer = Val(Application.Version)
  Set rsCon = CreateObject("ADODB.Connection")
  Set rsData = CreateObject("ADODB.Recordset")
  Set cat = CreateObject("ADOX.Catalog")
 
  If lVer < 12 Then
    szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FileName & ";" & _
                "Extended Properties=""Excel 8.0;HDR=" & IIf(HasTitle, "Yes", "No") & """;"
  Else
    szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FileName & ";" & _
                "Extended Properties=""Excel 12.0;HDR=" & IIf(HasTitle, "Yes", "No") & """;"
  End If
  If SheetName = "" Then
    Dim Dbs  As Object, db As Object
    Set Dbs = CreateObject("DAO.DBEngine." & IIf(lVer < 12, "36", "120"))
    Set db = Dbs.OpenDatabase(FileName, False, False, "Excel 8.0;")
    tmp = db.TableDefs(0).Name
    tmp = Replace(tmp, " ", "?")
    tmp = Replace(tmp, "'", " ")
    tmp = WorksheetFunction.Trim(tmp)
    tmp = Replace(tmp, " ", "'")
    tmp = Replace(tmp, "?", " ")
    SheetName = tmp
    db.Close
    Set Dbs = Nothing: Set db = Nothing
  End If
  If Right(SheetName, 1) <> "$" Then SheetName = SheetName & "$"
  rsCon.Open szConnect
  cat.ActiveConnection = rsCon
 
  szSQL = "SELECT * FROM [" & SheetName & RangeAddress & "];"
  rsData.Open szSQL, rsCon, 0, 1, 1
  tmpArr = rsData.GetRows
  ReDim Arr(UBound(tmpArr, 2) - UseTitle, UBound(tmpArr, 1) + 1)
  If UseTitle Then
    For lC = LBound(tmpArr, 1) To UBound(tmpArr, 1)
      Arr(0, lC) = rsData.Fields(lC).Name
    Next
  End If
  For lR = LBound(tmpArr, 2) To UBound(tmpArr, 2)
    For lC = LBound(tmpArr, 1) To UBound(tmpArr, 1)
      Arr(lR - UseTitle, lC) = tmpArr(lC, lR)
      Arr(lR - UseTitle, UBound(tmpArr, 1)) = FileName      'tao 1 cot o vi tri cot cuoi cung danh dau ten file cho tung hang du lieu
    Next
  Next
  rsData.Close: Set rsData = Nothing
  rsCon.Close: Set rsCon = Nothing
  GetData = Arr
End Function

Sub Main()
  Dim vFile, FileItem, aRes, Target As Range
  Dim FileName As String, SheetName As String, RangeAddress As String
  On Error Resume Next
  vFile = Application.GetOpenFilename("Excel File, *.xls; *.xlsx; *.xlsm", , , , True)
  If TypeName(vFile) = "Variant()" Then
    SheetName = "Sheet0"                'Thay ten sheet muon tong hop
    RangeAddress = "B2:V10000"          'Chon vi tri vung du lieu se lay (luu y nen chon cot bat dau co chua day du hang du lieu hoac hang can tong hop)
    For Each FileItem In vFile
      FileName = CStr(FileItem)
      If UCase(FileName) <> UCase(ThisWorkbook.FullName) Then
        aRes = GetData(FileName, SheetName, RangeAddress, False, False)
        If IsArray(aRes) Then
          Set Target = ActiveSheet.Range("B60000").End(xlUp).Offset(1)
          Target.Resize(UBound(aRes, 1) + 1, UBound(aRes, 2) + 1).Value = aRes
        End If
      End If
    Next
    MsgBox "Done!"
  End If
End Sub
 
Upvote 0
Em nhờ các anh chị viết dùm e đoạn code để lấy dữ liệu từ nhiều file, mỗi file nằm ở 1 thư mục khác nhau (nhưng tất cà các thư mục này đều nằm trong 1 thư mục tổng
Hằng tháng, em tạo ra 1 thư mục tổng, ví dụ tháng này là T8.2021 và lưu nó lên trên ổ mạng chia sẻ cho các văn phòng trên toàn quốc cùng vào nhập dữ liệu.
Mỗi văn phòng sẽ tự tạo 1 thư mục con (ví dụ DBN1 , BHO1 ...) nằm trong thư mục tổng này. Trong thư mục tổng, em để sẵn 1 template PHIEU YEU CAU HKM - MUC - GIAY IN.xlsx.
Các văn phòng sẽ dùng file template này để nhập yêu cầu cung cấp văn phòng phẩm như giấy in, mực in, hàng khuyến mãi... mà văn phòng của họ cần sử dụng trong tháng.
Sau đó, em dùng file tổng hợp để tổng hợp số lượng, mã hàng , loại hàng.... của tất cả lại và đặt hàng.

Vấn đề là có khoảng 50 văn phòng như thế, nên quá trình tổng hợp bằng tay rất mất thời gian. Nhờ các anh chị viết dùm 1 đoạn code để mình nhấn nút import, chỉ đường dẫn đến thư mục T8.2021 thì nó sẽ tự động mở từng thư mục con, tìm đến file PHIEU YEU CAU HKM - MUC - GIAY IN.xlsx trong thư mục đó, copy sheet MUC - GIAY IN , paste value vào sheet MUC - GIAY IN của file tổng hợp. Lưu ý : nhìn tên thư mục để copy. Ví dụ : vào thư mục BHO1, copy thì phải paste vào phần VP BHO1 tương ứng.
Sheet PYC HKM cũng tương tự như vậy
Bạn thay đường dẫn tại C1 và tên file tại C2 rồi bấm Cập nhật tổng hợp.
Code sẽ xóa hết các mã văn phòng đi và tự lấy thông tin từ thư mục tìm được để điền vào.
(Nếu vẫn muốn "chỉ đường dẫn đến thư mục T8.2021" thì báo lại để tôi sửa code
 

File đính kèm

  • 3. TONG HOP.xlsm
    35.5 KB · Đọc: 45
Upvote 0
Bạn thay đường dẫn tại C1 và tên file tại C2 rồi bấm Cập nhật tổng hợp.
Code sẽ xóa hết các mã văn phòng đi và tự lấy thông tin từ thư mục tìm được để điền vào.
(Nếu vẫn muốn "chỉ đường dẫn đến thư mục T8.2021" thì báo lại để tôi sửa code
Em cảm ơn anh, do 2 hôm nay em đang bị sốt cao, nằm bẹp dúm ở nhà nên chưa thử dc, chắc ít hôm nữa khỏe khỏe em sẽ thử ạ.
Còn vụ thư mục T8.2021 thì nó không cố định đâu, ví dụ qua tháng sau thì em lại tạo T9.2021 rồi,
 
Upvote 0
Bạn thay đường dẫn tại C1 và tên file tại C2 rồi bấm Cập nhật tổng hợp.

Em cảm ơn anh, do 2 hôm nay em đang bị sốt cao, nằm bẹp dúm ở nhà nên chưa thử dc, chắc ít hôm nữa khỏe khỏe em sẽ thử ạ.
Còn vụ thư mục T8.2021 thì nó không cố định đâu, ví dụ qua tháng sau thì em lại tạo T9.2021 rồi,
Ý tôi muốn nói là bạn phải tự thay đường dẫn ở ô C1 chứ không có 1 hộp thoại hiện ra để chọn thư mục 8-2021 hoặc 9-2021 ấy mà.
P/S: Sốt gì thế bạn. Test nhanh thử coi.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn, sốt bình thường thôi, chắc do làm việc quá sức nên suy kiệt, thức đêm liên tục 2 tháng nên sụp cầu dao do quá tải ý mà, hazz, 38.8 độ, người giờ như đi trên mây ấy, không còn sức, không suy nghĩ dc gì luôn
Ý tôi muốn nói là bạn phải tự thay đường dẫn ở ô C1 chứ không có 1 hộp thoại hiện ra để chọn thư mục 8-2021 hoặc 9-2021 ấy mà.
P/S: Sốt gì thế bạn. Test nhanh thử coi
 
Upvote 0
Cảm ơn bạn, sốt bình thường thôi, chắc do làm việc quá sức nên suy kiệt, thức đêm liên tục 2 tháng nên sụp cầu dao do quá tải ý mà, hazz, 38.8 độ, người giờ như đi trên mây ấy, không còn sức, không suy nghĩ dc gì luôn
Nghỉ ngơi đi bạn! Chúc bạn mau bình phục!
 
Upvote 0
Bạn thay đường dẫn tại C1 và tên file tại C2 rồi bấm Cập nhật tổng hợp.
Code sẽ xóa hết các mã văn phòng đi và tự lấy thông tin từ thư mục tìm được để điền vào.
(Nếu vẫn muốn "chỉ đường dẫn đến thư mục T8.2021" thì báo lại để tôi sửa code
Chào bạn, Mình mới test thử code của bạn.
nó chạy đúng như ý mình mong muốn luôn, chạy cực nhanh, chỉ có phát sinh 1 vài vấn đề nhỏ như sau :
1. Nó chỉ nhận ra 4 thư mục (mình có đến 8 thư mục trong ví dụ này, thực tế chạy là khoảng 50 ).
2. Nếu có thể được thì "chỉ đường dẫn đến thư mục đích" đi, nó thuận tiện hơn. Tên file thì luôn cố định rồi PYC HKM - MUC - GIAY IN - CCKD.xlsx, nên mình gán luôn cũng được, giảm bớt thao tác .

1628687141858.png

Ngoài ra, cái này là mới phát sinh, thêm 1 sheet CCKD, cũng cách làm y chang 2 sheet trước thôi, cũng nhìn tên thư mục, lấy số lượng đưa vào tương ứng, cảm phiền bạn bỏ chút ít thời gian giúp mình nhé.
1628687723573.png
 

File đính kèm

  • 3. TONG HOP.xlsm
    38.1 KB · Đọc: 18
  • Thang 08-2021.zip
    1.2 MB · Đọc: 13
Lần chỉnh sửa cuối:
Upvote 0
Mình không biết làm bằng những cách cao siêu như : Power table, pivot query, ADO...
nhưng làm bằng VBA thì cũng thấy ra được kết quả, tuy nó chỉ làm theo cách tuần tự Dùng vòng lặp: mở folder mẹ\mở folder con\chon Wb phù hợp\ mở Wb\ quét các Sh\ lấy dữ liệu sh phù hợp đưa vào mảng.. lặp lại vói folder tiếp theo.... đến hết===> gán xuống sh phù hợp.
Mã:
Sub TONGHOPNHUCAU()
MyFolder = "C:\Users\Admin\Downloads\Thang 08-2021"
    Dim fs, f, f1, s, sf, fc, fol, i, k, sWb
    Dim wb As Workbook, Sh As Worksheet
    Dim KQ(), KQ1(), M
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
  

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(MyFolder)
    Set sf = f.SubFolders
            M = Array(1, 2, 5, 6, 7, 8, 11, 12, 13, 14)
    ReDim KQ(1 To 100, 1 To 12) ' UBound(M) + 2)
    ReDim KQ1(1 To 50, 1 To 100)
    'On Error Resume Next
    For Each f1 In sf
        i = i + 1
        s = f1.Name
            KQ(i, 1) = i
            KQ(i, 2) = s
            KQ1(1, i) = s
        MyFolder = "C:\Users\Admin\Downloads\Thang 08-2021\" & s
        Set f = fs.GetFolder(MyFolder)
        Set fc = f.Files
            For Each fol In fc
                sWb = fol.Name
                        If sWb = "PHIEU YEU CAU HKM - MUC - GIAY IN.xlsx" Then
                            Set wb = Workbooks.Open(fol)
                                For Each Sh In wb.Worksheets
                                    If Sh.Name = "MUC - GIAY IN" Then
                                         For k = 0 To UBound(M)
                                                KQ(i, k + 3) = Sh.Cells(13, M(k))
                                         Next k
                                    End If
                                    If Sh.Name = "PYC HKM" Then
                                        For j = 3 To 31
                                                KQ1(j, i) = Sh.Cells(18 + j, 4)
                                        Next j
                                    End If
                               Next Sh
                                wb.Close False
                        End If
            Next fol
    Next
    Sheets("MUC - GIAY IN").[M13].Resize(i, 12) = KQ
    Sheets("PYC HKM").[AD4].Resize(34, i) = KQ1
    Set fs = Nothing: Set sf = Nothing: Set f = Nothing: Set fc = Nothing:
  
Msgbox  " Xong"
  
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
End Sub
Code này dựa trên code lấy tên folder và file của anh Batman
bạn vào Sh TH và nhấn nút để xem kết quả ở các sh

Bản thân kiến thức còn nông cạn, xin được mọi người ghé qua góp ý.
(dòng cả một ngày mói cho ra kết quả đúng là hoa mắt)
Kết quả chạy ra chưa đúng anh ơi.
ví dụ thư mục BGG1, sheet MUC - GIAY IN,
1628690358168.png

mà file tổng hợp chạy ra trống trơn
1628690450066.png
 

File đính kèm

  • 3. TONG HOP (1).xlsm
    31 KB · Đọc: 9
  • Thang 08-2021.zip
    1.2 MB · Đọc: 17
Upvote 0
Chào bạn, Mình mới test thử code của bạn.
nó chạy đúng như ý mình mong muốn luôn, chạy cực nhanh, chỉ có phát sinh 1 vài vấn đề nhỏ như sau :
1. Nó chỉ nhận ra 4 thư mục (mình có đến 8 thư mục trong ví dụ này, thực tế chạy là khoảng 50 ).
2. Nếu có thể được thì "chỉ đường dẫn đến thư mục đích" đi, nó thuận tiện hơn. Tên file thì luôn cố định rồi PYC HKM - MUC - GIAY IN - CCKD.xlsx, nên mình gán luôn cũng được, giảm bớt thao tác .


Ngoài ra, cái này là mới phát sinh, thêm 1 sheet CCKD, cũng cách làm y chang 2 sheet trước thôi, cũng nhìn tên thư mục, lấy số lượng đưa vào tương ứng, cảm phiền bạn bỏ chút ít thời gian giúp mình nhé.
Trả lời cho 1: "Nó chỉ nhận ra 4 thư mục (mình có đến 8 thư mục trong ví dụ này, thực tế chạy là khoảng 50 )."
File tôi gửi cho bạn ở máy tôi vẫn chạy đủ 8 folder. Không biết thực tế máy bạn có sai gì không, chứ tôi tin chắc code chạy đúng.

Trả lời cho 2: Chừ tôi gửi lại cho bạn file có sửa chỗ hiện hộp thoại để chọn folder và cố định luôn tên file nguồn

Vấn đề mới phát sinh sẽ làm sau.
 

File đính kèm

  • 3. TONG HOP_LuuGiaPhuc.xlsm
    39.2 KB · Đọc: 31
Upvote 0
Kết quả chạy ra chưa đúng anh ơi.
ví dụ thư mục BGG1, sheet MUC - GIAY IN,
View attachment 263933

mà file tổng hợp chạy ra trống trơn
View attachment 263934
Tên file bạn đặt ỏ các folder không thống nhất , ở folder BGG1 và BHD1, BTM1 là PYC..........CDKD ,các Folder khác là PHIEU YEU CAU .MUC - GIAY IN... (code chỉ tim các Wb có tên là PHIEU YEU CAU....thì mở wb và tìm sh có tên là "MUC - GIAY IN" và lấy số liệu). các folder BGG1,BHD1, BMT1 không trùng các điều kiện tìm thì code sẽ không mỏ các folder BGG1,BMT1, BHD1...là lẽ đương nhiên.

Bạn sửa lại code nhé.
thay đoạn If sWb = "PHIEU YEU CAU HKM - MUC - GIAY IN.xlsx" Then
bằng đoạn If sWb Like ("*MUC - GIAY IN*") Then '===> thay bằng các ký tự đặc biệt
và chạy thử.
Mà tại sao bạn không dùng code của anh Maika8008? Mình không có thòi gian để chạy thử code của anh ấy nên cũng không biết nó nhanh chậm thế nào.

chúc vui khỏe, thành công!
 
Upvote 0
Trả lời cho 1: "Nó chỉ nhận ra 4 thư mục (mình có đến 8 thư mục trong ví dụ này, thực tế chạy là khoảng 50 )."
File tôi gửi cho bạn ở máy tôi vẫn chạy đủ 8 folder. Không biết thực tế máy bạn có sai gì không, chứ tôi tin chắc code chạy đúng.

Trả lời cho 2: Chừ tôi gửi lại cho bạn file có sửa chỗ hiện hộp thoại để chọn folder và cố định luôn tên file nguồn

Vấn đề mới phát sinh sẽ làm sau.
tuyệt vời. Code của bạn chạy quá chuẩn. Cực kỳ nhanh. Còn vấn đề 1 là do mình sai, đúng như bạn HUONGHCKT nói, là do mình nhầm lẫn lúc tạo tên file không thống nhất trong các thư mục, mình đã sửa lại.
2 sheet đầu hoàn toàn đúng như ý. nó đã giúp mình rút ngắn được 1 lượng thao tác tay nhiều khủng khiếp với thời gian nhanh không tưởng luôn.
Còn vấn đề sheet CCKD mà mình nói thực ra cách làm, yêu cầu cũng y chang vậy thôi, nếu có thể bổ sung được thêm sheet đó vào là xem như 100% hoàn thành, từ nay việc tổng hợp này không còn là nỗi ám ảnh mình mỗi tháng nữa, trung bình mỗi tháng mình mất đúng 1 ngày chỉ để làm việc tổng hợp này, chưa kể hoa cả mắt, lại còn thỉnh thoảng bị lệch hàng, lệch cột.... quá oải. giờ có code này, chỉ cần mọi người không đổi tên file là xem như 2 phút là xong cái tổng hợp
Cảm ơn bạn rất nhiều
 
Lần chỉnh sửa cuối:
Upvote 0
tuyệt vời. Code của bạn chạy quá chuẩn. Cực kỳ nhanh. Còn vấn đề 1 là do mình sai, đúng như bạn HUONGHCKT nói, là do mình nhầm lẫn lúc tạo tên file không thống nhất trong các thư mục, mình đã sửa lại.
2 sheet đầu hoàn toàn đúng như ý. nó đã giúp mình rút ngắn được 1 lượng thao tác tay nhiều khủng khiếp với thời gian nhanh không tưởng luôn.
Còn vấn đề sheet CCKD mà mình nói thực ra cách làm, yêu cầu cũng y chang vậy thôi, nếu có thể bổ sung được thêm sheet đó vào là xem như 100% hoàn thành, từ nay việc tổng hợp này không còn là nỗi ám ảnh mình mỗi tháng nữa, trung bình mỗi tháng mình mất đúng 1 ngày chỉ để làm việc tổng hợp này, chưa kể hoa cả mắt, lại còn thỉnh thoảng bị lệch hàng, lệch cột.... quá oải. giờ có code này, chỉ cần mọi người không đổi tên file là xem như 2 phút là xong cái tổng hợp
Cảm ơn bạn rất nhiều
Bổ sung cho sheet CCKD.
Chú ý: Trong file nguồn tại BMT1 bạn quên đổi tên sheet thành CCKD nên code báo lỗi. Do đó khi chạy dữ liệu thực nếu có báo lỗi không tìm được vùng địa chỉ nguồn CCKDxxxxx thì là lỗi này. Lúc đó, bấm Debug và dựa theo biến VPName lúc code đang dừng để tìm đúng thư mục sửa lại.
 

File đính kèm

  • 3. TONG HOP_LuuGiaPhuc.xlsm
    47.7 KB · Đọc: 48
Upvote 0
Bổ sung cho sheet CCKD.
Chú ý: Trong file nguồn tại BMT1 bạn quên đổi tên sheet thành CCKD nên code báo lỗi. Do đó khi chạy dữ liệu thực nếu có báo lỗi không tìm được vùng địa chỉ nguồn CCKDxxxxx thì là lỗi này. Lúc đó, bấm Debug và dựa theo biến VPName lúc code đang dừng để tìm đúng thư mục sửa lại.
Đa tạ bạn rất nhiều. Quá hoàn hảo luôn.
 
Upvote 0
Web KT

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

Back
Top Bottom