- Tham gia
- 30/5/06
- Bài viết
- 1,798
- Được thích
- 4,706
- Giới tính
- Nam
Chúng ta thường có bài toán như sau:
Đây là vấn đề mà các thành viên thường đặt ra trên diễn đàn. Chính vì khi tôi thăm các trang blog, forum nước ngoài, thấy họ đã tổng hợp nên tôi đưa vào đây để các bạn tiện tham khảo.
Có bốn ví dụ cơ bản:
1) Merge một vùng từ tất cả các workbook in một thư mục - Merge a range from all workbooks in a folder (below each other)
2) Merge một vùng từ mỗi workbook bạn chọn - Merge a range from every workbook you select (below each other)
3) Merge một vùng từ tất cả các workbook trong một thư mục - Merge a range from all workbooks in a folder (next to each other)
4) Merge một vùng từ tất cả các workbook trong một thư mục với AutoFilter - Merge a range from all workbooks in a folder with AutoFilter
Thông tin và các Tips:
Các ví dụ dưới đây chỉ làm việc cho một thư mục (không áp dụng cho thư mục con)
Chú ý: workbook chứa mã (code) phải được đặt bên ngoài thư mục chứa các workbook cần tổng hợp dữ liệu.
Tip 1: Đối số hữu ích của Workbooks.Open - Useful Workbooks.Open arguments
Nếu workbook của bạn được protected bạn có thể dùng Workbooks.Open với tham số
Đôi khi mở workbook ra, bạn sẽ thấy hiện thông báo hỏi bạn có muốn "update" các link hay không.
Khi mở workbook với tham số UpdateLinks:=0 bạn sẽ tránh được thông báo hởi bạn muốn update hay không.
Nếu muốn mở workbook mà update các link thì bạn dùng UpdateLinks:=3
Bạn có thể tham khảo thông tin thêm tại đây
Tip 2: merge từ tất cả các tập tin với tên bắt đầu, giả sử bắt đầu với từ week
Các bạn có thể dùng:
Tip 3: Copy các giá trị (values) kể cả formats
Bạn hãy áp dụng ví dụ sau:
Trước khi bạn bật các tính năng ScreenUpdating, Calculation và EnableEvents, bạn cũng thêm hàng sau
(Về vấn đề này các bạn tham khảo tại đây.)
Xin xem tập tin ví dụ đính kèm.
Nguồn tại đây.
- Công ty mẹ có nhiều công ty con, mỗi công ty con sẽ gởi về báo cáo hàng ngày với một định dạng nhất định. Bài toán được người dùng đặt ra là tổng hợp các dữ liệu báo cáo trên nhiều workbook này về một workbook khác.
- Dữ liệu được xuất ra từ máy dưới dạng Excel, và để cùng một thư mục. Tôi muốn tổng hợp các dữ liệu này.
Đây là vấn đề mà các thành viên thường đặt ra trên diễn đàn. Chính vì khi tôi thăm các trang blog, forum nước ngoài, thấy họ đã tổng hợp nên tôi đưa vào đây để các bạn tiện tham khảo.
Có bốn ví dụ cơ bản:
1) Merge một vùng từ tất cả các workbook in một thư mục - Merge a range from all workbooks in a folder (below each other)
2) Merge một vùng từ mỗi workbook bạn chọn - Merge a range from every workbook you select (below each other)
3) Merge một vùng từ tất cả các workbook trong một thư mục - Merge a range from all workbooks in a folder (next to each other)
4) Merge một vùng từ tất cả các workbook trong một thư mục với AutoFilter - Merge a range from all workbooks in a folder with AutoFilter
Thông tin và các Tips:
Các ví dụ dưới đây chỉ làm việc cho một thư mục (không áp dụng cho thư mục con)
Chú ý: workbook chứa mã (code) phải được đặt bên ngoài thư mục chứa các workbook cần tổng hợp dữ liệu.
Tip 1: Đối số hữu ích của Workbooks.Open - Useful Workbooks.Open arguments
Mã:
Set mybook = Workbooks.Open(MyPath & MyFiles(Fnum), _
Password:="ron", WriteResPassword:="ron", UpdateLinks:=0)
Mã:
Password:="ron” and WriteResPassword:="ron"
Đôi khi mở workbook ra, bạn sẽ thấy hiện thông báo hỏi bạn có muốn "update" các link hay không.
Khi mở workbook với tham số UpdateLinks:=0 bạn sẽ tránh được thông báo hởi bạn muốn update hay không.
Nếu muốn mở workbook mà update các link thì bạn dùng UpdateLinks:=3
Bạn có thể tham khảo thông tin thêm tại đây
Tip 2: merge từ tất cả các tập tin với tên bắt đầu, giả sử bắt đầu với từ week
Các bạn có thể dùng:
Mã:
FilesInPath = Dir(MyPath & "week*.xl*")
Tip 3: Copy các giá trị (values) kể cả formats
Bạn hãy áp dụng ví dụ sau:
Mã:
With SourceRange
' [COLOR="Blue"]destrange là vùng bạn cần đưa dữ liệu vào[/COLOR]
Set destrange = destrange. _
Resize(.Rows.Count, .Columns.Count)
End With
destrange.Value = SourceRange.Value
With
' [COLOR="Blue"]SourceRange: vùng bạn cần phải copy dữ liệu[/COLOR]
SourceRange.Copy
With destrange
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End With
Trước khi bạn bật các tính năng ScreenUpdating, Calculation và EnableEvents, bạn cũng thêm hàng sau
Mã:
Application.Goto BaseWks.Cells(1)
Xin xem tập tin ví dụ đính kèm.
Nguồn tại đây.
File đính kèm
Lần chỉnh sửa cuối: