Code copy từ nhiều file con vào 1 file tổng hợp (tên file con trùng tên sheet ở file tổng hợp thì copy vào)

Liên hệ QC

Thbv

Thành viên hoạt động
Tham gia
3/5/19
Bài viết
102
Được thích
10
Mong giúp đỡ: Mình có 3 file: file 1, file 2 và file tổng hợp. Mình muốn code copy sheet1 của file 1 vào sheet1 của file tổng hợp. Sheet1 của file 2 vào sheet 2 của file tổng hợp. Xin cảm ơn
 

File đính kèm

  • tonghop.rar
    196.8 KB · Đọc: 9
Mong giúp đỡ: Mình có 3 file: file 1, file 2 và file tổng hợp. Mình muốn code copy sheet1 của file 1 vào sheet1 của file tổng hợp. Sheet1 của file 2 vào sheet 2 của file tổng hợp. Xin cảm ơn
Bạn thử file. Cách dùng: Chạy code Main -> tại hộp thoại Open tìm đến thư mục chứa các file 1.xls, 2.xls... -> quét chọn các file cần copy dữ liệu -> Open.
 

File đính kèm

  • Tonghop.xlsm
    221.8 KB · Đọc: 10
Upvote 0
Mình xin lỗi bổ sung thêm mong bạn giúp đỡ. Copy nguyên định dạng ở sheet1 của file1 từ A1 đến H5 và sheet1 của file2 từ A1 đến H5 vào sheet 1 của file tổng hợp cũng từ A1. Copy nguyên định dạng ở sheet1 của file2 từ A6 đến H1000 vào sheet2 của file file tổng hợp.
Bạn thử file. Cách dùng: Chạy code Main -> tại hộp thoại Open tìm đến thư mục chứa các file 1.xls, 2.xls... -> quét chọn các file cần copy dữ liệu -> Open.
Giúp mình thêm chút copy từ file nguồn (A6 đến H1000 sang file tổng hợp từ B6 đến i 1000) in cảm ơn
 
Upvote 0
Mình xin lỗi bổ sung thêm mong bạn giúp đỡ. Copy nguyên định dạng ở sheet1 của file1 từ A1 đến H5 và sheet1 của file2 từ A1 đến H5 vào sheet 1 của file tổng hợp cũng từ A1. Copy nguyên định dạng ở sheet1 của file2 từ A6 đến H1000 vào sheet2 của file file tổng hợp.

Giúp mình thêm chút copy từ file nguồn (A6 đến H1000 sang file tổng hợp từ B6 đến i 1000) in cảm ơn
Tôi có vài câu hỏi:
1. Bạn có bao nhiêu file cần copy?
2. Tốc độ thực thi code chậm (khi phải copy nguyên định dạng) có là vấn đề trở ngại với bạn không?
 
Upvote 0
Cảm ơn bạn nhiều
Bài đã được tự động gộp:

 
Upvote 0
Cách dùng: Chạy code Main -> tại hộp thoại Browse tìm đến thư mục chứa các file 1.xls, 2.xls... -> OK (không cần chọn file nhưng lưu ý trong thư mục này không chứa các file Excel thừa)
 

File đính kèm

  • Tonghop_Thbv.xlsm
    225.4 KB · Đọc: 12
Upvote 0
Giúp mình thêm chút phần copy từ từ A1 đến H5 từ file nguồn sang file tổng hợp cũng từ A1 đến H5. Còn copy file nguồn từ A6 đến H1000 dán sang file tổng hợp từ B6 đến i 1000 thì sửa chỗ nào bạn? Cảm ơn bạn nhiều
 
Upvote 0
Giúp mình thêm chút phần copy từ từ A1 đến H5 từ file nguồn sang file tổng hợp cũng từ A1 đến H5. Còn copy file nguồn từ A6 đến H1000 dán sang file tổng hợp từ B6 đến i 1000 thì sửa chỗ nào bạn? Cảm ơn bạn nhiều
Tôi thấy A1:H5 cộng với A6:H1000 thì đâu có khác gì A1:H1000 đâu. Nhưng tùy bạn, tôi đã làm lại, tách riêng 2 vùng đó rồi.

Update: tôi cũng đã chép nguyên định dạng độ rộng cột, chiều cao dòng của file nguồn vào file TH rồi. Việc này khiến code chạy lâu hơn 1 chút
 

File đính kèm

  • Tonghop_Thbv.xlsm
    219 KB · Đọc: 6
Lần chỉnh sửa cuối:
Upvote 0
Ý mình là muốn lấy dữ liệu phần từ A6 đến H1000 của file nguồn nhưng dán vào file tổng hợp từ B6: i 1000 còn phần từ A1 đến H5 là được rồi
 
Upvote 0
Mình xin phép giải thích rõ hơn: File nguồn lấy từ A1 đến H5 sang file tổng hợp từ A1 đến H5, tiếp theo lấy tiếp file nguồn từ A6 đến H1000 sang file tổng hợp nhưng dán vào B6 đến i 1000. Như vậy phần từ A1 đến H5 copy nguyên sang file tổng hợp, chỉ phần từ A6 đến H1000 của file nguồn là copy sang file tổng hợp từ B6 đến i 1000 thôi bạn ạ
Bài đã được tự động gộp:

Kết quả mong muốn trong file bạn nhé
 

File đính kèm

  • Tonghop_Thbv (2).xlsm
    220.4 KB · Đọc: 3
Upvote 0
Mình xin phép giải thích rõ hơn: File nguồn lấy từ A1 đến H5 sang file tổng hợp từ A1 đến H5, tiếp theo lấy tiếp file nguồn từ A6 đến H1000 sang file tổng hợp nhưng dán vào B6 đến i 1000. Như vậy phần từ A1 đến H5 copy nguyên sang file tổng hợp, chỉ phần từ A6 đến H1000 của file nguồn là copy sang file tổng hợp từ B6 đến i 1000 thôi bạn ạ
Bài đã được tự động gộp:

Kết quả mong muốn trong file bạn nhé
Bạn thay code này cho code Main trong file:

Rich (BB code):
Sub Main()
Dim FileName As String, SheetName As String, Rg1 As String, Rg2 As String, Rg3 As String, ShSName As String
Dim WbD As Workbook, WbS As Workbook
Dim ShD As Worksheet, ShS As Worksheet
Dim i As Long, j As Long

    ReDim arr(1 To 6000, 1 To 1)
    
    iR = 0
    Set WbD = ThisWorkbook
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    With Application.FileDialog(4)
        .Show: .AllowMultiSelect = False
        On Error Resume Next
        ListFilesInFolder .SelectedItems(1), True
        If Err.Number = 5 Then Exit Sub
    End With
    
    SheetName = "Sheet1": Rg1 = "A1:H5": Rg2 = "A6:H1000": Rg3 = "B6:I1000"  'Thay doi vung data nguon (neu co)
    
    'Thi hành
    For i = 1 To iR
        FileName = CStr(MyPath & arr(i, 1))
        ShSName = Left(arr(i, 1), InStr(1, arr(i, 1), ".") - 1)
        Application.DisplayAlerts = False
        Set WbS = Workbooks.Open(FileName)
        Set ShS = WbS.Sheets(SheetName)
        Set ShD = WbD.Sheets(ShSName)
        ShS.Range(Rg1).Copy ShD.Range(Rg1)
        ShS.Range(Rg2).Copy ShD.Range(Rg3)
        For j = 2 To 9
            ShD.Cells(6, j).EntireColumn.ColumnWidth = ShS.Cells(6, j - 1).EntireColumn.ColumnWidth
        Next
        WbS.Close False
    Next
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.DisplayAlerts = True
    MsgBox "Done!"
End Sub
 
Upvote 0
Vùng B6 đến i 1000 là vùng của file tổng hợp mà bạn. file kết quả mong muốn mình gửi ở trên đó
 
Upvote 0
Vùng B6 đến i 1000 là vùng của file tổng hợp mà bạn. file kết quả mong muốn mình gửi ở trên đó
Thì bạn xem code ở bài #13:

Rg1 = "A1:H5": Rg2 = "A6:H1000": Rg3 = "B6:I1000"

ShS.Range(Rg1).Copy ShD.Range(Rg1) là copy A1:H5 nguồn đến A1:H5 đích?

ShS.Range(Rg2).Copy ShD.Range(Rg3) là copy A6:H1000 nguồn đến B6:I1000 đích (đích là file tổng hợp đấy)

Có phải không?
 
Upvote 0
Đúng vậy. Cảm ơn bạn nhiều lát mình xem
 
Upvote 0
Bạn xem giúp mình chạy code xong chẳng thấy có dữ liệu gì cả
Bài đã được tự động gộp:

Đợi mình xem lại đã nhé? Cảm ơn bạn
Bài đã được tự động gộp:

SheetName = "Sheet1": Rg1 = "A1:H5": Rg2 = "A6:H1000": Rg3 = "B6:I1000" 'Thay doi vung data nguon (neu co).
Dòng trên chỉ lấy 1 trong 2 điều kiện thôi. Mình muốn lấy cả 2 điều kiện dưới:
ShS.Range(Rg1).Copy ShD.Range(Rg1) là copy A1:H5 nguồn đến A1:H5 đích (file tổng hợp)
ShS.Range(Rg2).Copy ShD.Range(Rg3) là copy A6:H1000 nguồn đến B6:I1000 đích (đích là file tổng hợp đấy)
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn xem giúp mình chạy code xong chẳng thấy có dữ liệu gì cả
Bài đã được tự động gộp:

Đợi mình xem lại đã nhé? Cảm ơn bạn
Bài đã được tự động gộp:

SheetName = "Sheet1": Rg1 = "A1:H5": Rg2 = "A6:H1000": Rg3 = "B6:I1000" 'Thay doi vung data nguon (neu co).
Dòng trên chỉ lấy 1 trong 2 điều kiện thôi. Mình muốn lấy cả 2 điều kiện dưới:
ShS.Range(Rg1).Copy ShD.Range(Rg1) là copy A1:H5 nguồn đến A1:H5 đích (file tổng hợp)
ShS.Range(Rg2).Copy ShD.Range(Rg3) là copy A6:H1000 nguồn đến B6:I1000 đích (đích là file tổng hợp đấy)
Không hiểu bạn nói 2 điều kiện gì? Lệnh copy vùng như bạn yêu cầu chứ có điều kiện gì đâu nhỉ?
 
Upvote 0
Mình chỉ thấy nó copy mỗi A1 đến H5 của file nguồn vào file đích thôi. Còn A6 đến H1000 của file nguồn nó không copy vào B6 đến i 1000 của file đích
 
Upvote 0
Mình chỉ thấy nó copy mỗi A1 đến H5 của file nguồn vào file đích thôi. Còn A6 đến H1000 của file nguồn nó không copy vào B6 đến i 1000 của file đích
Thôi tôi up cái file len cho lành. Là tôi muốn chép code để tiết kiệm dung lượng cho diễn đàn nhưng bất thành. Tôi thử file rồi, không lý gì không chạy.

Chú: Lần sau bạn làm ơn nói rõ, dù có bận dến mấy, chứ không là mất công nói đến 2 lần.
 

File đính kèm

  • Tonghop_Thbv.xlsm
    225.4 KB · Đọc: 11
Upvote 0
Web KT

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

Back
Top Bottom