Copy tất cả các sheet của các file excel trong thư mục vào 1 file.

Liên hệ QC

tranviethung

Thành viên mới
Tham gia
26/8/08
Bài viết
37
Được thích
3
Các bạn à, tôi có 1 vấn đề này phiền mọi người giúp đỡ: Xây dựng 1 macro cho phép copy tất cả sheet trong các file excel trong 1 thư mục vào 1 file tổng hợp. Ví dụ: Thư mục VDu có 5 file excel; trong mỗi file excel này có 5 sheet-> 5 file sẽ có 25 sheet. Vậy công việc của macro này là copy 25 sheet do vao trong file tong hop(các sheet trong file nầy có tên là các số thứ tự 1,2,3,..,500 hoặc hơn.Mong các bạn giúp mình.
Thanks
Tôi gủi mẫu 3 file File 1,2 (mỗi file có 3 sheet)->khi chạy macro file tong hợp sẽ có 6 sheet.
 
Lần chỉnh sửa cuối:
Các bạn à, tôi có 1 vấn đề này phiền mọi người giúp đỡ: Xây dựng 1 macro cho phép copy tất cả sheet trong các file excel trong 1 thư mục vào 1 file tổng hợp. Ví dụ: Thư mục VDu có 5 file excel; trong mỗi file excel này có 5 sheet-> 5 file sẽ có 25 sheet. Vậy công việc của macro này là copy 25 sheet do vao trong file tong hop(các sheet trong file nầy có tên là các số thứ tự 1,2,3,..,500 hoặc hơn.Mong các bạn giúp mình.
Thanks
Tôi gủi mẫu 3 file File 1,2 (mỗi file có 3 sheet)->khi chạy macro file tong hợp sẽ có 6 sheet.
Bạn xem bài hướng dẫn tại đây nhé! Từ bài #14
http://www.giaiphapexcel.com/forum/showthread.php?t=8764
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn Tuấn Kiệt có thể hoàn chỉnh mảcro thực hiện được không? Mình xem bài hướng dẫn nhưng không hiểu lắm. Cám ơn bạn nhiều, minh nghĩ macro đó phải add dc thư mục chứa các file excel hoặc add từng file excel mà mình muốn copy các sheet của nó để thao tác đúng không bạn?!
 
Upvote 0
Bạn Tuấn Kiệt có thể hoàn chỉnh mảcro thực hiện được không? Mình xem bài hướng dẫn nhưng không hiểu lắm. Cám ơn bạn nhiều, minh nghĩ macro đó phải add dc thư mục chứa các file excel hoặc add từng file excel mà mình muốn copy các sheet của nó để thao tác đúng không bạn?!

Bạn xem đoạn code này nhé, có tham khảo code của anh nvson:
Điều kiện:
- File Tổng hợp được đặt tên là ReportSum.xls
- File Tổng hợp và các file report con phải lưu chung trong một folder và theo đường dẫn D:\Report\
- Mở file ReportSum.xls lên và click vào nút Consolidation, chọn các file cần copy (có thể chọn từng file hoặc chọn nhiều file (MultiSelection), ấn OK để xem kết quả nhé!

PHP:
Option Explicit
Sub AutoCopyFile()
Dim BaseBook, MyBook As Workbook     ''BaseBook là file tổng hợp, MyBook la biến chỉ định từng file report con
Dim SourceRange, DestRange As Range   ''SourceRange là vùng cần copy trong file con, DestRange la vùng trên file tổng hợp để copy vào
Dim Zn, Zj As Long
Trong đó, Zn là số lượng file cần copy, Zi la biến chạy tham chiếu đến số lượng sheet trong từng file
'---------------------------------
Dim MyPath, SaveDriveDir As String
Dim FName As Variant
'---------------------------------
SaveDriveDir = CurDir
MyPath = "D:\Report\"      'Khai báo đường dẫn cố định chứa các file cần copy, nếu sửa thì sửa chỗ này
ChDrive MyPath
ChDir MyPath
'============================================================================
With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
End With
'============================================================================
'Lựa chọn các file để copy, có thể chọn nhiều file cùng lúc:
FName = Application.GetOpenFilename(filefilter:="Excel Files (*.xls), *.xls", MultiSelect:=True)
If IsArray(FName) Then
Set BaseBook = Workbooks("ReportSum.xls")
'============================================================================
'Bắt đầu duyệt qua từng file để copy:
    For Zn = LBound(FName) To UBound(FName)
    Set MyBook = Workbooks.Open(FName(Zn))
        'Bắt đầu chon từng sheet trong file để copy:
        For Zj = 1 To MyBook.Worksheets.Count
            Set SourceRange = MyBook.Worksheets(Zj).UsedRange   'Chỉ quét chọn các ô nào có dữ liệu
            BaseBook.Activate
            '----------------------------------------------------------------
            'Tạo sheet mới trước khi copy:
            BaseBook.Worksheets.Add
            '----------------------------------------------------------------
            'Đặt tên cho sheet mới:
            ActiveSheet.Name = MyBook.Name & "_" & MyBook.Worksheets(Zj).Name
            '----------------------------------------------------------------
            'Xác định vùng để Copy và Paste:
            Set DestRange = BaseBook.ActiveSheet.Cells(1, 1)
            MyBook.Worksheets(Zj).Cells.Copy
            BaseBook.ActiveSheet.Paste
        Next Zj
        MyBook.Close False
    Next Zn
End If
'========================================================================
'Trả về mặc định trước khi mở file:
ChDrive SaveDriveDir
ChDir SaveDriveDir
With Application
    .ScreenUpdating = True
    .DisplayAlerts = True
End With
End Sub

Bạn giải nén file đính kèm vào ổ đĩa D:\ nhé!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cám ơn ban Tuấn Kiệt nhiều, giờ mình muốn hỏi nếu trong file excel mình ad vào mà có 1 sheet nao đó k có dữ liệu thi mình k cần copy hoặc cứ copy vao file Report Sum nhung se xoa di khi duyet lai được không? Có cách loại bỏ k copy file chứa hình ảnh, bản đồ không? Vi tron File excel của mình có những sheet chứa hình vẽ. Thanks bạn nhiều
 
Upvote 0
Cám ơn ban Tuấn Kiệt nhiều, giờ mình muốn hỏi nếu trong file excel mình ad vào mà có 1 sheet nao đó k có dữ liệu thi mình k cần copy hoặc cứ copy vao file Report Sum nhung se xoa di khi duyet lai được không? Có cách loại bỏ k copy file chứa hình ảnh, bản đồ không? Vi tron File excel của mình có những sheet chứa hình vẽ. Thanks bạn nhiều

Khả năng mình cũng giới hạn lắm bạn à! Vấn đề của bạn chắc mình phải nghiên cứu thêm. Hiện giờ khả năng mình khó mà làm được!
 
Upvote 0
Cách để tìm sheet (vùng chỉ định trước ví dụ như F8:F23) không có dữ liệu, sẽ k copy vào sheet reportsum. Dù sao cũng rất cám ơn bạn, khi nào bạn có cách xử lý cho mình bít với nhé,hihi
 
Upvote 0
Cách để tìm sheet (vùng chỉ định trước ví dụ như F8:F23) không có dữ liệu, sẽ k copy vào sheet reportsum. Dù sao cũng rất cám ơn bạn, khi nào bạn có cách xử lý cho mình bít với nhé,hihi

Thì trước (hoặc sau) khi copy, thêm 1 lệnh dùng hàm Counta nữa là xong thôi mà

Nếu Counta = 0 thì xóa đi (hoặc không copy nữa)

Thân!
 
Upvote 0
Vấn đề nảy sinh ở đây là: với file có tên dài quá 31 kí tự , chứa các kí tự như: -,..thì khi add sẽ bị lỗi và thứ tự copy thì sheet cuối cùng lị ở vị trí đầu tiên trong file excel, minh nghĩ sheet copy cuối cùng sẽ fải ở cuối chứ nhỉ?. Bạn có thể chỉ rõ hoặc sửa vào đoạn code chương trình để tìm loại các sheet rỗng không? Mình cám ơn các bạn nhiều!!!
 
Upvote 0
Về đếm sheet rỗng thì Okbap đã nói ở trên rồi. Bạn dùng counta để đếm
 
Upvote 0
Mình có 1 vấn đề cần các bạn trên diễn đàn coi và giúp mình nhé, vấn đề liên quan đến xây dựng 1 macro thực hiện các công việc sau:
Mình có gửi kèm 3 file DL:
  • File Tonghop có cấu trúc: sheet đầu tiên tổng hợp lấy DL từ các sheet 1,2,3,...280..
  • Các sheet từ sheet thứ 3 trở đi có tên theo số thứ tự 1,2,3,..280.. là các sheet được copy từ các file ; tại các ô từ G5-Y25 của mỗi sheet có các công thức để lấy giá trị của cột F của sheet đó.
Việc mình cần các bạn giúp là viết 1 macro ngay trong file Tonghop này để copy tất cả các sheet trong 2 file excel(chú ý độ dài và các kí tự trong fần tên File(k giới hạn); bạn Tuấn Kiệt xem lại giúp mình nhé!)File kia vào vị trí từ sheet 3 trở đi và có tên theo số thứ tự tăng dần 1,2,3...280 như đã trình bày trong file Tonghop. Sau khi copy được tất cả các sheet ở 2 file excel kia vào file Tonghop thì đặt được công thức cho tất cả các sheet vừa copy vào để lọc lấy các giá trị của cột F của mỗi sheet vào các ô từ G5-Y5. Khi đã đặt được các công thức này thì các bạn thấy trong sheet đầu tiên của file Tonghop sẽ có DL được lấy từ các sheet vừa được đặt công thức tương ứng.
Thanks các bạn đã quan tâm giúp mình, các bạn chưa hiểu rõ yêu cầu của vấn đề mình nêu ở đây thì nói với mính nhé!

Mình quên ,các bạn giúp mình vấn đề này: khi copy các sheet từ 2 file excel kia thì kiểm tra các sheet nếu là sheet trống(k có DL) hoặc file chứa hình vẽ (như sheet 1 trong 2 file êxcl đó) thì bỏ qua k copy vào File Tonghop nhé!
Thanks!
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom