Trong công việc, nhất là những công việc liên quan đến dữ liệu như ngân hàng, tài chính, kế toán và các ngành nghiên cứu, các bạn đã gặp phải trường hợp cần phải tổng hợp dữ liệu từ nhiều file Excel khác nhau nhưng có cấu trúc giống nhau vào cùng 1 file master. Trong bài viết này, SprinGo sẽ hướng dẫn các bạn làm thế nào để có thể tổng hợp dữ liệu từ nhiều file excel vào 1 file không cần mở file rất nhanh chóng và tiện lợi qua video sau đây:
Tìm hiểu thêm: Hướng dẫn học excel cơ bản đến nâng cao
Đoạn code các bạn cần thay đổi cho phù hợp với dữ liệu là (xem phần comment trong code)
Code cho hàm GetConnXLS()
Lưu ý:
1. Trong bài có sử dụng kiến thức về lập trình VBA nâng cao, kết hợp với kiến thức về SQL, nếu bạn có ý định đầu tư thời gian học bài bản những kiến thức này, hãy tham khảo trên SprinGo
2. Hãy backup (tạo 1 bản copy của file bạn đang làm việc cùng và lưu ở 1 nơi an toàn) trước khi thử code copy từ trên mạng về, nếu bạn không biết mình đang làm gì, hãy dừng lại trước khi có kiến thức về VBA tốt hơn và biết trước kết quả đoạn code mình copy vào Excel.
Cách làm này có 1 điểm cần lưu ý là: các file con được tổng hợp cần có cấu trúc giống hệt nhau (số cột, tên cột và số dòng, vùng dữ liệu). Nếu sử dụng cách này để tổng hợp các file có cấu trúc tên cột, số lượng cột giống nhau nhưng khác nhau về số dòng sẽ dẫn đến việc thiếu dữ liệu trong file tổng hợp.
VBA giúp ích rất nhiều trong công việc: giúp bạn tăng tốc trong quá trình xử lý trên Excel, giúp lập các báo cáo tự động, điều khiển các chương trình khác như Word, Power Point, Outlook… giúp biến file Excel của bạn trở thành 1 phần mềm chuyên nghiệp…
Để có thể học VBA một cách đầy đủ, có hệ thống, bạn hãy tham gia khoá học VBA101 – VBA cơ bản dành cho người mới bắt đầu của hệ thống SprinGo. Hiện nay hệ thống đang có nhiều ưu đãi khi bạn đăng ký khóa học này. Bạn có thể chủ động liên lạc qua email: listen@HocExcel.Online để biết thêm chi tiết về những ưu đãi hiện có cho bạn nếu bạn là học viên mới.




Dùng ADO sẽ không cần mở file:
Cách dùng:
– Cho code trên vào Module
– Chạy sub Main
– Cửa sổ Open File hiện ra, dùng chuột chọn file đầu, bấm giữ phím Shift rồi còn file cuối —> Bấm nút Open
– Chờ trong giây lát, khi MsgBox hiện ra báo hiệu hoàn tất, kiểm tra lại dữ liệu trong file hiện hành xem đã cập nhật chưa
————-
Lưu ý: File TongHop phải được lưu theo định dạng XLSM (nếu lưu bằng XLSX sẽ mất sạch code)
Bạn chỉ cần để ý Sub Main này thôi:
Khai báo cho đúng: màu đỏ là tên sheet, màu xanh dương là vùng dữ liệu, xanh lá là tên file
———————-
Bạn nói chung chung thế sao tôi biết được. Khám bệnh thì phải có bệnh nhân bạn à
Đoạn code Set Target = Sheet1.Range("A60000").End(xlUp).Offset(1)
Trong file của bạn chẳng có sheet nào là Sheet1 cả
Nên nhớ viết kiểu như thế Excel hiểu rằng đó là Sheet CodeName nha
Cái "Sheet1" mà bạn nhìn thấy có Sheet CodeName = "Sheet6"
Vậy, hoặc là bạn sửa đoạn code trên thành:
Set Target = Sheet6.Range("A60000").End(xlUp).Offset(1)
Hoặc là sửa thành:
Set Target = Worksheets("Sheet1").Range("A60000").End(xlUp).Offset(1)
———————
Vầy mới đúng chứ anh Set Target = Selection
Code có tính đến trường hợp này mà bạn. Bạn cho SheetName = "" đồng nghĩa sẽ lấy Sheet đầu tiên
Hoặc cũng không cần gán giá trị nào cho SheetName cũng được:
————————————
Chưa hiểu ý bạn chỗ này! Như thế nào thì gọi là dữ liệu mới
Thử code này trên 1 file trắng:
Chạy code, hộp mở file hiện ra, chọn file đầu, bấm phím Shift và chọn file cuối rồi bấm nút Open. Chờ đến khi thông báo "Thành công" hiện ra là xong
Để thí nghiệm, đừng chọn quá nhiều file nha. Chọn 1 vài file, sau khi code chạy xong hãy kiểm tra lại cho chắc chắn rồi hẳn tiếp tục
gửi bài viết tháng 8 rồi tháng 10 quay lại , rồi sau hôm nay thì tháng mấy bạn quay lại ?
muốn sửa code thì xóa hết code đang có trong file rồi ghi code này vào mà chạy
1. Lúc thì "Đủ Điều kiện", lúc thì "Đủ đk" ??? Đã xây dựng dữ liệu mà không chuẩn thì có bằng không ah? –> Viết code cũng vất vả…tốn công
2. Bài này mà bạn dùng ADO chi cho mệt vậy???
3. Chạy code sau,-> Của sổ mở File xuất hiện -> Multi Select File (chọn 1 lần nhiều file) muốn lấy dữ liệu vào…và hưởng kết quả.
Bạn chạy thử đoạn sau:
bạn sủa những chố sau xem
Microsoft.ACE.OLEDB.12.0
thành Microsoft.JET.OLEDB.4.0
và Excel 12.0 thành Excel 8.0
Rất có thể file con bên trong là 2003
Nên bạn sửa cụm sau trong code trên.
Thành
bạn bấm ngôi sao chạy code
bạn thêm dòng màu đỏ này vào là ok nhé.
các file có cấu trúc cột dòng khác nhau, dữ liệu minh họa và giải thích quá sơ sài, nên code khó viết đúng ý
Bạn chạy mỗi code này. Còn code trong file tôi không sửa nha
Tôi không thử "tình huống" với các file của bạn, tôi chỉ có thể "thêm 1 chút" code có sẵn (của người khác đã viết), Bạn chay thử có thể đạt yêu cầu của bạn. Nếu không thì chờ bạn khác xem giúp.
Trong FILE TONG HOP, bạn sửa Sub Main() trong modMain như sau: