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.
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
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 ơnBạ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.
Tôi có vài câu hỏi: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
Mình có khoảng 20 file cần copy. Tốc độ chậm không vấn đề gì. Cảm ơn bạnTô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?
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.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
Bạn thay code này cho code Main trong file: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é
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
Thì bạn xem code ở bài #13: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 đó
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ỉ?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)
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.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